diff options
author | Ben Murdoch <benm@google.com> | 2011-05-13 16:23:25 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-16 11:35:02 +0100 |
commit | 65f03d4f644ce73618e5f4f50dd694b26f55ae12 (patch) | |
tree | f478babb801e720de7bfaee23443ffe029f58731 /Source/WebKit/gtk | |
parent | 47de4a2fb7262c7ebdb9cd133ad2c54c187454d0 (diff) | |
download | external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.zip external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.gz external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.bz2 |
Merge WebKit at r75993: Initial merge by git.
Change-Id: I602bbdc3974787a3b0450456a30a7868286921c3
Diffstat (limited to 'Source/WebKit/gtk')
172 files changed, 79235 insertions, 0 deletions
diff --git a/Source/WebKit/gtk/ChangeLog b/Source/WebKit/gtk/ChangeLog new file mode 100644 index 0000000..ef1f2aa --- /dev/null +++ b/Source/WebKit/gtk/ChangeLog @@ -0,0 +1,16563 @@ +2011-01-17 Philippe Normand <pnormand@igalia.com> + + Unreviewed, build fix for 2 GTK tests html file paths. + + * tests/testmimehandling.c: + (main): + * tests/testwebview.c: + +2011-01-16 Adam Barth <abarth@webkit.org> + + Rubber-stamped by Eric Seidel. + + Move WebKit into Source + https://bugs.webkit.org/show_bug.cgi?id=52530 + + * GNUmakefile.am: + +2011-01-14 Yuzo Fujishima <yuzo@google.com> + + Reviewed by Antti Koivisto. + + Rename cache() to memoryCache() + https://bugs.webkit.org/show_bug.cgi?id=52433 + + * webkit/webkitglobals.cpp: + (webkit_set_cache_model): + +2011-01-14 Pavel Feldman <pfeldman@chromium.org> + + Not reviewed: gtk build fix (2). + + * webkit/webkitwebview.cpp: + +2011-01-14 Pavel Feldman <pfeldman@chromium.org> + + Not reviewed: gtk build fix. + + * webkit/webkitwebinspector.cpp: + +2011-01-13 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Martin Robinson. + + [gtk] Zero-sized font does not yet work + https://bugs.webkit.org/show_bug.cgi?id=49793 + + Allow 0 as a minimum-font-size value for the settings. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2011-01-12 Philippe Normand <pnormand@igalia.com> + + Unreviewed build fix for 32-bits Release. Include GRefPtrGtk.h so + the GdkCursor templates are found and used at runtime. + + * WebCoreSupport/FullscreenVideoController.cpp: + +2011-01-11 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] GRefPtr should not be used with Gtk widgets + https://bugs.webkit.org/show_bug.cgi?id=51241 + + GRefPtr breaks the widget life-cycle, the main problem is + that GRefPtr calls g_object_unref() when it's destroyed, + which is undesirable for widgets. In gtk+ widgets are created with + a floating reference and when added to a container, the container + takes the ownership of the widget consuming the floating + reference. So you don't usually need to call g_object_ref/unref on + widgets (only for some operations like reparent a widget) and + toplevel widgets are destroyed with gtk_widget_destroy(). + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::DragClient): + (WebKit::DragClient::~DragClient): + (WebKit::DragClient::startDrag): + * WebCoreSupport/DragClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + * webkit/webkitwebviewprivate.h: + +2011-01-10 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + Update the NEWS file in preparation for the 1.3.10 release. + + * NEWS: Update the NEWS. + +2011-01-10 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Remove use of deprecated GTK+ methods before the 1.3.10 release + https://bugs.webkit.org/show_bug.cgi?id=52173 + + * WebCoreSupport/FullscreenVideoController.cpp: + (FullscreenVideoController::enterFullscreen): Use a GRefPtr here to avoid having to + call either g_object_unref or gdk_cursor_unref. + * webkit/webkitwebview.cpp: Guard use of deprecated methods. + (webkit_web_view_realize): Ditto. + (webkit_web_view_drag_end): Ditto. + +2011-01-10 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix gtk2 compilation for master + https://bugs.webkit.org/show_bug.cgi?id=51885 + + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): Removed the call to + gtk_dialog_set_has_separator API to remove a warning. + +2011-01-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Create intermediate libWebCore library + https://bugs.webkit.org/show_bug.cgi?id=52116 + + * GNUmakefile.am: add libWebCore.la to LIBADD and remove webcore + sources from the libwebkit library SOURCES. + +2011-01-09 Xianzhu Wang <phnixwxz@gmail.com> + + Reviewed by Darin Fisher. + + https://bugs.webkit.org/show_bug.cgi?id=41441 + createWindow method should only do window-creating without URL navigation + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::createWindow): + +2011-01-08 Martin Robinson <mrobinson@igalia.com> + + GTK+ build fix. Adding missing headers to the source list, fixing make dist. + + * GNUmakefile.am: Fix make dist. + +2011-01-07 Adam Barth <abarth@webkit.org> + + Rubber-stamped by Eric Seidel. + + Move WebCore to Source + https://bugs.webkit.org/show_bug.cgi?id=52050 + + * GNUmakefile.am: + +2011-01-07 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + GTK: AX: atk tests need to be updated after recent changes + https://bugs.webkit.org/show_bug.cgi?id=51932 + + Fix gtk_widget_get_accessible() in WebKitWebView to keep returning + the AtkObject of role ATK_ROLE_DOCUMENT_FRAME. + + With the change to support WK2 accessibility, the root object of + the AX hierarchy is different from what GTK expects as the current + hirarchy right now includes a new accessible object as the parent + of the accessible web area (AXScrollView). + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_accessible): Return the first child of the + wrapper associated to the root accessible object in the document, + to keep everything in the GTK port working as it used to be. + + Re-enable skipped ATK unit tests now they are passing again. + + * tests/testatk.c: + (main): Re-enable skipped tests. + * tests/testatkroles.c: + (main): Ditto. + +2011-01-06 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + GTK: AX: atk tests need to be updated after recent changes + https://bugs.webkit.org/show_bug.cgi?id=51932 + + Skip ATK unit tests until we can look into what is causing these failures. + + * tests/testatk.c: + (main): Skip all tests. + * tests/testatkroles.c: + (main): Ditto. + +2011-01-06 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + Include a new header in the static headers list. This is necessary + so that "make install" installs the header. + + * GNUmakefile.am: Include webkitglobals.h in the header list. + +2011-01-05 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha. + + Build fix for GTK+ 3.x. Remove the call to gtk_range_set_update_policy. + GTK+ 3.x has removed this method and the default in GTK+ 2.x is continuous, + so this call is unnecessary. + + * WebCoreSupport/FullscreenVideoController.cpp: + (FullscreenVideoController::createHud): Remove call to gtk_range_set_update_policy(). + +2011-01-04 Chris Fleizach <cfleizach@apple.com> + + Reviewed by Martin Robinson. + + GTK: AX: DRT needs to use correct root object method. + https://bugs.webkit.org/show_bug.cgi?id=51911 + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::getRootAccessibleElement): + (DumpRenderTreeSupportGtk::getFocusedAccessibleElement): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + +2011-01-04 Chris Fleizach <cfleizach@apple.com> + + Reviewed by Sam Weinig. + + WK2: Support Accessibility + https://bugs.webkit.org/show_bug.cgi?id=51859 + + Use rootObject() method to get top of ax tree. + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::getFocusedAccessibleElement): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_accessible): + +2011-01-03 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Darin Adler. + + Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr + https://bugs.webkit.org/show_bug.cgi?id=51846 + + Changed all references to PlatformRefPtr in GTK+ code to GRefPtr. + +2011-01-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Final patch, removing webkitprivate.{cpp,h}, and adding a + webkitglobals module to hold non-object-specific functions and + definitions that do not make sense on their own. + + * GNUmakefile.am: + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::createWindow): + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/DocumentLoaderGtk.cpp: + (WebKit::DocumentLoader::attachToFrame): + * WebCoreSupport/DragClientGtk.cpp: + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::ignoreWordInSpellDocument): + (WebKit::EditorClient::learnWord): + (WebKit::EditorClient::checkSpellingOfString): + (WebKit::EditorClient::getGuessesForWord): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createDocumentLoader): + * WebCoreSupport/InspectorClientGtk.cpp: + * webkit/webkit.h: + * webkit/webkitapplicationcache.cpp: + (webkit_application_cache_set_maximum_size): + * webkit/webkitdownload.cpp: + (webkit_download_class_init): + * webkit/webkitgeolocationpolicydecision.cpp: + * webkit/webkitglobals.cpp: Added. + (webkit_get_default_session): + (webkit_set_cache_model): + (webkit_get_cache_model): + (webkit_get_web_plugin_database): + (currentToplevelCallback): + (closeIconDatabaseOnExit): + (webkitInit): + (WebKit::pasteboardHelperInstance): + * webkit/webkitglobals.h: Added. + * webkit/webkitglobalsprivate.h: Copied from WebKit/gtk/webkit/webkitwebsettingsprivate.h. + * webkit/webkithittestresult.cpp: + (webkit_hit_test_result_class_init): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_class_init): + * webkit/webkitnetworkresponse.cpp: + (webkit_network_response_class_init): + * webkit/webkitprivate.cpp: Removed. + * webkit/webkitprivate.h: Removed. + * webkit/webkitsecurityorigin.cpp: + * webkit/webkitviewportattributes.cpp: + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_class_init): + * webkit/webkitwebdatabase.cpp: + * webkit/webkitwebdatasource.cpp: + (webkit_web_data_source_class_init): + (webkit_web_data_source_new_with_request): + (WebKit::kitNew): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_class_init): + * webkit/webkitwebframeprivate.h: + * webkit/webkitwebhistoryitem.cpp: + (webkit_web_history_item_class_init): + * webkit/webkitwebinspector.cpp: + * webkit/webkitwebnavigationaction.cpp: + * webkit/webkitwebplugin.cpp: + (webkit_web_plugin_class_init): + * webkit/webkitwebplugindatabase.cpp: + (webkit_web_plugin_database_class_init): + * webkit/webkitwebpluginprivate.h: + * webkit/webkitwebpolicydecision.cpp: + * webkit/webkitwebresource.cpp: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkitWebViewGetEnchantDicts): + (WebKit::core): + * webkit/webkitwebsettingsprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + * webkit/webkitwebview.h: + * webkit/webkitwebwindowfeatures.cpp: + (webkit_web_window_features_class_init): + (WebKit::kitNew): + +2011-01-02 Xan Lopez <xlopez@igalia.com> + + Fix GTK+ build. + + * GNUmakefile.am: tests do actually include JSC. + +2011-01-02 Xan Lopez <xlopez@igalia.com> + + Fix GTK+ build. + + * GNUmakefile.am: remove individual -I$(srcdir)/Source when we'll + already get them from javascriptcore_cppflags, and add it for the + introspection build (which is not tested in the bots). + +2011-01-02 Adam Barth <abarth@webkit.org> + + Speculative build fix for GTK. Add Source to the include paths. + + * GNUmakefile.am: + +2011-01-01 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Move JavaScriptCore to Source + https://bugs.webkit.org/show_bug.cgi?id=51604 + + * GNUmakefile.am: + * docs/GNUmakefile.am: + - Point to JavaScriptCore in its new location. + +2010-12-29 Martin Robinson <mrobinson@igalia.com> + + Build fix for GTK+. + + * webkit/webkitwebinspector.cpp: Add missing DumpRenderTreeSupportGtk include. + +2010-12-29 Martin Robinson <mrobinson@igalia.com> + + [GTK] GSettings warning is concealing real warnings on the build bots + https://bugs.webkit.org/show_bug.cgi?id=51691 + + Reviewed by Xan Lopez. + + Do not print the GSettings warning message when running in DumpRenderTree. + + * webkit/webkitwebinspector.cpp: + (inspectorGSettings): Do not print the GSettings warning if we are running + in DumpRenderTree. This should clean up the test results page a great deal. + +2010-12-28 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Closing a window during an onload event can trigger serious GLib warnings + https://bugs.webkit.org/show_bug.cgi?id=51686 + + Don't emit the close-web-view signal immediately during execution of closeWindowSoon. + The signal handler may choose to destroy the web view while handling that signal, + which may remove the last reference to the web view. FrameLoaderClient depends on the + view still existing though. Instead, let the caller finish executing and emit the signal + after a 0 length timeout. This matches the behavior on the Windows and Mac ports. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): Initialize the timer id. + (WebKit::emitCloseWebViewSignalLater): Callback for the timer. + (WebKit::ChromeClient::closeWindowSoon): Do the actual signal invocation after + the caller finishes its tasks. + * WebCoreSupport/ChromeClientGtk.h: Add a new member for the timer id. We + can use this to prevent emitting the close-web-view signal twice. + +2010-12-28 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Eric Seidel. + + [GTK] Clean up usage of NULL in webkitwebframe.cpp + https://bugs.webkit.org/show_bug.cgi?id=51685 + + Replace occurrences of NULL with 0, in webkitwebframe.cpp. Not all + uses of NULL have been changed, as certain GLib functions require + an explicit NULL as a sentinel. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_data_source_from_core_loader): + (webkit_web_frame_class_init): + (webkit_web_frame_new): + (webkit_web_frame_get_title): + (webkit_web_frame_get_uri): + (webkit_web_frame_get_web_view): + (webkit_web_frame_get_name): + (webkit_web_frame_get_parent): + (webkit_web_frame_load_string): + (webkit_web_frame_load_alternate_string): + (webkit_web_frame_find_frame): + (webkit_web_frame_get_global_context): + (webkit_web_frame_get_data_source): + (webkit_web_frame_get_provisional_data_source): + (webkit_web_frame_print_full): + (webkit_web_frame_get_security_origin): + (webkit_web_frame_get_network_response): + +2010-12-27 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Ryosuke Niwa. + + [GTK] EditorClient::generateEditorCommands queues up "null string" commands + https://bugs.webkit.org/show_bug.cgi?id=51569 + + Prevent adding "null string" editor commands by first checking whether or not + the command string is null in generateEditorCommands before appending it to the + list of pending editor command strings. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::generateEditorCommands): Check for the null string (no + command for this key combination) before appending a command string to the list of + pending editor commands. + (WebKit::EditorClient::executePendingEditorCommands): Add an ASSERT which detects + null command strings. + +2010-12-27 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Remove unneeded includes from our headers. + + * WebCoreSupport/PasteboardHelperGtk.h: ditto. + * webkit/webkitprivate.h: ditto. + * webkit/webkitsoupauthdialog.h: ditto. + +2010-12-21 Philippe Normand <pnormand@igalia.com> + + Reviewed by Eric Seidel. + + [GTK] minimal build with --database fails + https://bugs.webkit.org/show_bug.cgi?id=51394 + + * webkit/webkitprivate.cpp: + (webkit_init): Use cacheStorage() only if the + OFFLINE_WEB_APPLICATIONS feature is enabled. + +2010-12-22 Sam Weinig <sam@webkit.org> + + Reviewed by Darin Adler. + + WebKit2 needs to mirror the frame tree in the UIProcess + https://bugs.webkit.org/show_bug.cgi?id=51546 + + - Add client functions to notify that a frame has been added or + removed from the page cache. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didSaveToPageCache): + (WebKit::FrameLoaderClient::didRestoreFromPageCache): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-12-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + * NEWS: update for 1.3.9 release. + +2010-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Add WebPlugin, WebPluginDatabase, and ViewportAttributes to the + documentation control files, in preparation for 1.3.8. Also take + the opportunity to add descriptions to WebPlugin and + WebPluginDatabase. + + * docs/GNUmakefile.am: + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + * webkit/webkitwebplugin.cpp: + * webkit/webkitwebplugindatabase.cpp: + +2010-12-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + * GNUmakefile.am: add missing files. + * NEWS: update for 1.3.8 release. + +2010-12-18 Antonio Gomes <agomes@rim.com> + + Reviewed by Xan Lopez. + + [GTK+] Simplify spatial navigation handling in EditorClientGtk.cpp + https://bugs.webkit.org/show_bug.cgi?id=51302 + + Patch changes: + 1) The editor command for LEFT arrow key press without modifier + from MoveBackward to MoveLeft; + 2) And similarly changes the editor command for RIGHT arrow key + press without modifier from MoveForward to MoveRight. + + It has no implications since SelectionController::modifyMovingRight() + handles "MoveRight" equaly to how SelectionController::modifyMovingForward() + handles "MoveForward" when granularity is 'CharacterGranularity'. The former + falls back to the later in the case of other editor commands. + + Analogously, the same applies to how SelectionController::modifyMovingLeft() and + SelectionController::modifyMovingForward() handle "MoveLeft" and "MoveBackward" + editor commands, respectively. + + With this change we can remove the spatial navigation hack from moveCursorCallback(), + in EditorClientGtk.cpp. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::moveCursorCallback): + +2010-12-16 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] scrolling artifacts + https://bugs.webkit.org/show_bug.cgi?id=45029 + + Call gdk_window_process_updates() right after moving the window + when scrolling. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::scroll): + +2010-12-15 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r74117. + http://trac.webkit.org/changeset/74117 + https://bugs.webkit.org/show_bug.cgi?id=51113 + + This broke the GTK1 build. (Requested by mrobinson on + #webkit). + + * GNUmakefile.am: + +2010-12-15 Amruth Raj <amruthraj@motorola.com> and Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com> + + Reviewed by Martin Robinson. + + Changes to enable building WebKit2 for Gtk port. + (https://bugs.webkit.org/show_bug.cgi?id=37369) + + * GNUmakefile.am: Added WebCore/bindings/gobject to webkitgtk_sources & webkitgtk_cppflags. + They should get compiled only when WebKit/gtk/GNUmakefile.am is getting included but not + with WebKit2/GNUmakefile.am inclusion. + +2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Simplify context-menu handling code + https://bugs.webkit.org/show_bug.cgi?id=49658 + + Use gtk_container_foreach() so that we only iterate the list of + children once and we avoid creating/destroying the list. It also + connects the activate signal for submenu items. + + * webkit/webkitwebview.cpp: + (contextMenuConnectActivate): + (webkit_web_view_forward_context_menu_event): + +2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix several issues in r73858 + https://bugs.webkit.org/show_bug.cgi?id=51032 + + - It uses both glib private data and it allocates its own private + structure. + - It calls parent's dispose method from finalize. + - webkit_web_plugin_get_mimetypes() uses a wrong annotation for the + returned value, it should be transfer none rather than transfer + container. + - Since the mime type list is internal and we return the list and not a + copy, it should never be freed by the caller, so + webkit_web_plugin_mime_type_list_free() should be removed from the + public API. + - Mime types list is used uninitialized. + - Mention in the docs that list returned by + webkit_web_plugin_database_get_plugins() must be freed with + webkit_web_plugin_database_plugins_list_free(). + + * webkit/webkitwebplugin.cpp: + (webkit_web_plugin_finalize): + (webkit_web_plugin_class_init): + (webkit_web_plugin_init): + * webkit/webkitwebplugin.h: + * webkit/webkitwebplugindatabase.cpp: + +2010-12-14 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [gtk] misnamed gtk-doc strings for webkit_web_view_can_{c|c|p}_clipboard + https://bugs.webkit.org/show_bug.cgi?id=50571 + + * webkit/webkitwebview.cpp: + +2010-12-13 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Add API to enable/disable plugins at runtime + https://bugs.webkit.org/show_bug.cgi?id=50891 + + * tests/testwebplugindatabase.c: + (test_webkit_web_plugin_database_get_plugins): test that disabling + a plugin works. + * webkit/webkitwebplugin.cpp: + (webkit_web_plugin_get_property): hook 'enabled' property. + (webkit_web_plugin_set_property): ditto. + (webkit_web_plugin_class_init): define 'enabled' property. + (webkit_web_plugin_set_enabled): setter for the property. + (webkit_web_plugin_get_enabled): getter for the property. + * webkit/webkitwebplugin.h: add the APIs to the header. + +2010-12-13 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Do not use GET_PRIVATE macros + https://bugs.webkit.org/show_bug.cgi?id=50915 + + GET_PRIVATE macros are slow and should only be used in the object + init() method. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::inputMethodsMenuItem): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::setTitle): + (WebKit::FrameLoaderClient::dispatchCreatePage): + (WebKit::postCommitFrameViewSetup): + * webkit/webkitdownload.cpp: + (webkit_download_init): + * webkit/webkitgeolocationpolicydecision.cpp: + (webkit_geolocation_policy_decision_init): + * webkit/webkithittestresult.cpp: + (webkit_hit_test_result_init): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_init): + * webkit/webkitsecurityorigin.cpp: + (webkit_security_origin_init): + * webkit/webkitsecurityoriginprivate.h: + * webkit/webkitviewportattributes.cpp: + (webkit_viewport_attributes_init): + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_init): + * webkit/webkitwebdatabase.cpp: + (webkit_web_database_init): + * webkit/webkitwebdatasource.cpp: + (webkit_web_data_source_init): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_init): + (webkit_web_frame_new): + * webkit/webkitwebframeprivate.h: + * webkit/webkitwebhistoryitem.cpp: + (webkit_web_history_item_init): + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_init): + * webkit/webkitwebnavigationaction.cpp: + (webkit_web_navigation_action_init): + * webkit/webkitwebplugin.cpp: + (webkit_web_plugin_init): + * webkit/webkitwebplugindatabase.cpp: + (webkit_web_plugin_database_init): + * webkit/webkitwebplugindatabaseprivate.h: + * webkit/webkitwebpluginprivate.h: + * webkit/webkitwebpolicydecision.cpp: + (webkit_web_policy_decision_init): + * webkit/webkitwebresource.cpp: + (webkit_web_resource_init): + * webkit/webkitwebresourceprivate.h: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_init): + * webkit/webkitwebview.cpp: + (PopupMenuPositionFunc): + (webkit_web_view_forward_context_menu_event): + (webkit_web_view_drag_end): + (webkit_web_view_drag_data_get): + (webkit_web_view_query_tooltip): + (webkit_web_view_init): + * webkit/webkitwebwindowfeatures.cpp: + (webkit_web_window_features_init): + +2010-10-28 MORITA Hajime <morrita@google.com> + + Reviewed by Ojan Vafai. + + spellcheck does not check pasted text + https://bugs.webkit.org/show_bug.cgi?id=40092 + + Added a stub implememntation. + + * WebCoreSupport/EditorClientGtk.h: + (WebKit::EditorClient::requestCheckingOfString): + +2010-12-12 Xan Lopez <xlopez@igalia.com> + + Rubber-stamped by Martin Robinson. + + * webkit/webkitwebplugin.h: add a note about the extension list + being a NULL-terminated array. + +2010-12-12 Xan Lopez <xlopez@igalia.com> + + Rubber-stamped by Gustavo Noronha. + + Stop checking for glib >= 2.16, we have dependend on a newer + version for a long time now. + + * tests/testatk.c: Stop checking for glib >= 2.16. + * tests/testatkroles.c: ditto. + * tests/testdomdocument.c: ditto. + * tests/testdomdomwindow.c: ditto. + * tests/testdomnode.c: ditto. + * tests/testglobals.c: ditto. + * tests/testhttpbackend.c: ditto. + * tests/testloading.c: ditto. + * tests/testmimehandling.c: ditto. + * tests/testnetworkrequest.c: ditto. + * tests/testnetworkresponse.c: ditto. + * tests/testwebbackforwardlist.c: ditto. + * tests/testwebdatasource.c: ditto. + * tests/testwebframe.c: ditto. + * tests/testwebhistoryitem.c: ditto. + * tests/testwebresource.c: ditto. + * tests/testwebsettings.c: ditto. + * tests/testwebview.c: ditto. + * tests/testwindow.c: ditto. + +2010-12-11 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Add APIs for plugin management + https://bugs.webkit.org/show_bug.cgi?id=50827 + + Add WebKitWebPluginDatabase and WebKitWebPlugin classes for basic + plugin management at the client level. For now they provide + "read-only" access to the plugin list. + + * GNUmakefile.am: add new files to the build. + * tests/testwebplugindatabase.c: Test that the database contains + the test plugin, which should always be loaded. + * webkit/webkit.h: add new headers. + * webkit/webkitdefines.h: add new defines. + * webkit/webkitwebplugin.cpp: An new class representing a plugin object. + * webkit/webkitwebplugin.h: ditto. + * webkit/webkitwebplugindatabase.cpp: A new class that contains the list of active plugins. + * webkit/webkitwebplugindatabase.h: ditto. + * webkit/webkitwebplugindatabaseprivate.h: Private header. + * webkit/webkitwebpluginprivate.h: Private header. + * webkit/webkitwebview.cpp: + (webkit_get_web_plugin_database): returns the WebKitWebPluginDatabase for this session. + * webkit/webkitwebview.h: add method to header. + +2010-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Split private bits of several objects to their own private + headers, and to their implementation files. + + * GNUmakefile.am: + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/EditorClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + * webkit/webkitdownload.cpp: + (webkit_download_set_response): + * webkit/webkitdownloadprivate.h: Added. + * webkit/webkithittestresult.cpp: + (WebKit::kit): + * webkit/webkithittestresultprivate.h: Added. + * webkit/webkitnetworkresponse.cpp: + (WebKit::core): + (WebKit::kitNew): + * webkit/webkitnetworkresponseprivate.h: Added. + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitsecurityorigin.cpp: + (webkit_security_origin_get_web_database): + (WebKit::core): + (WebKit::kit): + * webkit/webkitsecurityoriginprivate.h: Added. + * webkit/webkitviewportattributes.cpp: + * webkit/webkitviewportattributesprivate.h: Added. + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebbackforwardlistprivate.h: Added. + * webkit/webkitwebdatabase.cpp: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_network_response): + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebhistoryitemprivate.h: Added. + * webkit/webkitwebnavigationaction.cpp: + (WebKit::kit): + (WebKit::core): + * webkit/webkitwebnavigationactionprivate.h: Added. + * webkit/webkitwebpolicydecision.cpp: + * webkit/webkitwebpolicydecisionprivate.h: Added. + * webkit/webkitwebresource.cpp: + * webkit/webkitwebresourceprivate.h: Added. + * webkit/webkitwebsettings.cpp: + * webkit/webkitwebsettingsprivate.h: Added. + * webkit/webkitwebview.cpp: + +2010-12-10 Alejandro G. Castro <alex@igalia.com> + + Unreviewed, fixed small typo in the name of a function. + + * webkit/webkitwebsettings.cpp: + (getAvailableDictionariesCallback): + (webkit_web_settings_set_property): + +2010-12-09 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Add hasSpellingMarker support to the DRT + https://bugs.webkit.org/show_bug.cgi?id=50739 + + Added a new private API function to support the spelling marker + tests in the DRT. + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::webkitWebFrameSelectionHasSpellingMarker): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + +2010-12-10 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Choose a dictionary in case there is no one defined or the + env LANG does not propose one + https://bugs.webkit.org/show_bug.cgi?id=50738 + + In case no dict is set and we can not find one using the + environment just get the first dictionary installed in the list. + + * webkit/webkitwebsettings.cpp: + (getAvilableDictionariesCallback): + (webkit_web_settings_set_property): + +2010-12-10 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + Remove unnecessary variable names from DumpRenderTreeSupportGtk + https://bugs.webkit.org/show_bug.cgi?id=50815 + + There were some unnecessary variable names in DumpRenderTreeSupportGtk, + so remove them. + + * WebCoreSupport/DumpRenderTreeSupportGtk.h: Do it. + +2010-12-10 Joone Hur <joone@kldp.org> + + Reviewed by Xan Lopez. + + [GTK] Unskipping some test cases in /userscripts dependent on addUserStyleSheet + https://bugs.webkit.org/show_bug.cgi?id=50808 + + Unskipping the following test cases: + userscripts/mixed-case-stylesheet.html + userscripts/simple-stylesheet.html + userscripts/user-style-all-frames.html + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::addUserStyleSheet): Added "bool allFrames" parameter. + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + +2010-12-10 Joone Hur <joone@kldp.org> + + Reviewed by Eric Seidel. + + [GTK] Add DRT support for pageProperty, isPageBoxVisible, pageSizeAndMarginsInPixels, and addUserStyleSheet + https://bugs.webkit.org/show_bug.cgi?id=50783 + + This patch allows to unskip the following test cases: + printing/page-rule-selection.html + printing/page-format-data.html + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::pageProperty): Added. + (DumpRenderTreeSupportGtk::isPageBoxVisible): Ditto. + (DumpRenderTreeSupportGtk::pageSizeAndMarginsInPixels): Ditto. + (DumpRenderTreeSupportGtk::addUserStyleSheet): Ditto. + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + +2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Split private bits of WebKitWebInspector to its own private + header, and to its implementation file. + + * WebCoreSupport/InspectorClientGtk.cpp: + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebinspector.cpp: + (isSchemaAvailable): + (inspectorGSettings): + * webkit/webkitwebinspectorprivate.h: Added. + * webkit/webkitwebview.cpp: + +2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Split private bits of WebKitNetworkRequest to its own private + header, and to its implementation file. Also take the opportunity + to use PlatformRefPtr for NetworkRequest where it makes sense, and + make the creation less verbose by adding kitNew. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + (WebKit::FrameLoaderClient::download): + (WebKit::FrameLoaderClient::startDownload): + * webkit/webkitdownload.cpp: + * webkit/webkitnetworkrequest.cpp: + (WebKit::kitNew): + (WebKit::core): + * webkit/webkitnetworkrequestprivate.h: Added. + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebdatasource.cpp: + (webkit_web_data_source_get_initial_request): + (webkit_web_data_source_get_request): + * webkit/webkitwebframe.cpp: + +2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Split private bits of WebKitWebFrame to its own private header, and + to its implementation file. + + * GNUmakefile.am: + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/DragClientGtk.cpp: + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebdatasource.cpp: + * webkit/webkitwebframe.cpp: + (WebKit::getViewFromFrame): + (WebKit::core): + (WebKit::kit): + * webkit/webkitwebframeprivate.h: Added. + * webkit/webkitwebpolicydecision.cpp: + * webkit/webkitwebview.cpp: + +2010-12-09 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson. + + [Gtk] Populate DumpRenderTreeSupportGtk (part IV) + https://bugs.webkit.org/show_bug.cgi?id=48429 + + Moved also webkit_worker_thread_count() to DumpRenderTreeSupportGtk, + since it was only used by DRT for now. + + Since this method was the only one in webkitworker.cpp, the file was + also removed. + + * GNUmakefile.am: + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::workerThreadCount): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitworkers.cpp: Removed. + +2010-12-06 Philippe Normand <pnormand@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Support the Mozilla-style Fullscreen Javascript API + https://bugs.webkit.org/show_bug.cgi?id=50572 + + Fullscreen API support. It is controlled at runtime using a new + setting called enable-fullscreen, set to FALSE by default. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::supportsFullScreenForElement): + (WebKit::ChromeClient::enterFullScreenForElement): + (WebKit::ChromeClient::exitFullScreenForElement): + * WebCoreSupport/ChromeClientGtk.h: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + +2010-12-09 Joone Hur <joone@kldp.org> + + Reviewed by Martin Robinson. + + [GTK] Support for viewport meta tag + https://bugs.webkit.org/show_bug.cgi?id=45443 + + This patch adds a new gobject to offer the viewport properties to user agents. + It is WebKitViewportAttributes that contains the viewport size, initial scale with limits, + and information about whether a user is able to scale the contents in the viewport. + + This feature was introduced by Safari on the iPhone. For more information on + the viewport properties, refer to the Safari reference library at + http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html + + * GNUmakefile.am: Added webkitviewportattributes.h webkitviewportattributes.cpp. + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::dispatchViewportDataDidChange): Added this callback to know whether the viewport arguments is available. + * WebCoreSupport/ChromeClientGtk.h: + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::dumpConfigurationForViewport): Added this function to compute the viewport attributes with the given availableWidth and availableHeight. + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): Invalidate the viewport attributes. + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitprivate.h: Added webkitViewportAttributesRecompute as a private function. + * webkit/webkitviewportattributes.cpp: Added. + (webkit_viewport_attributes_class_init): + (webkit_viewport_attributes_init): + (webkit_viewport_attributes_get_property): + (webkit_viewport_attributes_set_property): + (webkitViewportAttributesRecompute): Recompute the optimal viewport attributes and emit the viewport-attributes-changed signal. + (webkit_viewport_attributes_recompute): a public API for calling webkitViewportAttributesRecompute. + * webkit/webkitviewportattributes.h: Added. + * webkit/webkitwebview.cpp: + (webkit_web_view_get_property): Added PROP_VIEWPORT_ATTRIBUTES. + (webkit_web_view_dispose): Deallocate the WebKitViewportAttributes instance. + (webkit_web_view_class_init): Added the viewport-attributes-recompute-requested and viewport-attributes-changed signals. + (webkit_web_view_init): Set the WebKitViewportAttributes instance. + (webkit_web_view_get_viewport_attributes): Added a getter to obtain the WebKitViewportAttributes instance held by the given WebKitWebView. + * webkit/webkitwebview.h: + * webkit/webkitwebviewprivate.h: Added WebKitViewportAttributes as a private variable. + +2010-12-09 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Fix 'make install' woes with some versions of automake. + + * GNUmakefile.am: use $(top_builddir) instead of $(builddir), + since we actually want a valid path for the file regardless of the + place from where the script is called. + +2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Build fix. Take webView{Enter,Exit}Fullscreen back out of the + WebKit namespace, and remove a function signature that got in by + mistake because of a bad merge. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (WebKit::core): + (WebKit::kit): + +2010-12-08 Brian Weinstein <bweinstein@apple.com> + + Reviewed by John Sullivan. + + Layering Violation in ContextMenu - member variable of type HitTestResult + https://bugs.webkit.org/show_bug.cgi?id=50586 + + Update users of ContextMenu and ContextMenuController to match where the new functions + are located. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems): + +2010-12-08 Martin Robinson <mrobinson@igalia.com> + + Reviewed by John Sullivan. + + [GTK] Layering violation in ContextMenuGtk.cpp + https://bugs.webkit.org/show_bug.cgi?id=50676 + + ContextMenuGtk accesses the page's ContextMenuController, which is a layering + violation. This was fixed for Mac with change r73469. We make a similar fix here + by moving the "activated" signal connection to the WebKit layer. + + * webkit/webkitwebview.cpp: + (popupMenuItemActivated): Have ContextMenuController handle this signal. + (webkit_web_view_forward_context_menu_event): For all items in the untouched + context menu, connect their "activated" signal to the new popupMenuItemActivated + handler. + +2010-12-08 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson. + + [Gtk] Populate DumpRenderTreeSupportGtk (part III) + https://bugs.webkit.org/show_bug.cgi?id=48429 + + Adjusted some call sites of previously internal API declared + webkitprivate.h that have moved to DumpRenderTreeSupportGtk. + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::gcCollectJavascriptObjects): + (DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread): + (DumpRenderTreeSupportGtk::gcCountJavascriptObjects): + (DumpRenderTreeSupportGtk::layoutFrame): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Split webkitprivate.{cpp,h} in more manageable chunks + https://bugs.webkit.org/show_bug.cgi?id=50698 + + Split private bits of WebKitWebView to its own private header, and + to its implementation file. Take the opportunity to fix includes + sorting to comply with the style guide. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::enterFullscreenForNode): + (WebKit::ChromeClient::exitFullscreenForNode): + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/DragClientGtk.cpp: + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + * WebCoreSupport/EditorClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/InspectorClientGtk.cpp: + * WebCoreSupport/PasteboardHelperGtk.cpp: + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebdatasource.cpp: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + (WebKit::core): + (WebKit::kit): + (WebKit::webViewEnterFullscreen): + (WebKit::webViewExitFullscreen): + * webkit/webkitwebviewprivate.h: Added. + +2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + The storage for the subresources is a GHashTable which does not + guarantee order, so we need to make our checking more resilient. + + * tests/testwebresource.c: + (test_web_resource_sub_resource_loading): + +2010-12-08 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + Fix assertion in the API test, we are requesting the favicon and + the subresource so we have to make sure we are assigning just the + first subresource. + + * tests/testwebresource.c: + (resource_request_starting_sub_cb): + +2010-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] clears the subresources prematurely + https://bugs.webkit.org/show_bug.cgi?id=50634 + + Make adding the main resource explicit, and only clear + subresources when the new load is committed, avoid clearing them + prematurely. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest): + (WebKit::FrameLoaderClient::provisionalLoadStarted): + (WebKit::FrameLoaderClient::prepareForDataSourceReplacement): + (WebKit::postCommitFrameViewSetup): + * tests/testwebdatasource.c: + (notify_load_status_lifetime_cb): + (test_webkit_web_data_source_lifetime): + (main): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_add_main_resource): + (webkit_web_view_add_resource): + (webkit_web_view_clear_resources): + +2010-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] testwebdatasource - unreachable test is broken + https://bugs.webkit.org/show_bug.cgi?id=50629 + + Fix, and disable testwebdatasource's unreachable test (it is not + passing now that it actually tests what it should). This also + fixes the wait timer to actually work as expected. + + * tests/testwebdatasource.c: + (notify_load_status_unreachable_cb): + (notify_load_status_cb): + (test_webkit_web_data_source): + +2010-12-07 Martin Robinson <mrobinson@igalia.com> + + Unreviewed, rolling out r73392. + http://trac.webkit.org/changeset/73392 + https://bugs.webkit.org/show_bug.cgi?id=50489 + + This commit caused crashes on the GTK+ bots + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::finishedLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + +2010-12-06 Nate Chapin <japhet@chromium.org> + + Reviewed by Adam Barth. + + Update calls to DocumentWriter. + https://bugs.webkit.org/show_bug.cgi?id=50489 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::finishedLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + +2010-12-06 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Build is broken after r73353 + https://bugs.webkit.org/show_bug.cgi?id=50568 + + Fix the gtk-doc build by making all members of the cache model + enum public. gtk-doc does not support making only some enum + members private. We should also expose it so that users querying + the cache model do not get mysterious, undocumented results. + + * webkit/webkitwebview.h: Fix gtk-doc for the cache model enum. + +2010-12-06 Derek Weitzel <djw8605@gmail.com> + + Reviewed by Martin Robinson. + + [GTK] API Documentation referencing depreciated GTK_WIDGET_TOPLEVEL + https://bugs.webkit.org/show_bug.cgi?id=50512 + + Fixed reference to depreciated GTK_WIDGET_TOPLEVEL. + + * webkit/webkitwebview.cpp: + +2010-12-06 Joone Hur <joone@kldp.org> + + Reviewed by Xan Lopez. + + [GTK] The webkit cache model needs to be set when WebFrameLoaderClient::didPerformFirstNavigation() is called + https://bugs.webkit.org/show_bug.cgi?id=50430 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didPerformFirstNavigation): Set the webview cache model. + * webkit/webkitprivate.cpp: + (webkit_init): Removed the code of setting the webview cache model. + +2010-12-04 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson. + + [Gtk] Populate DumpRenderTreeSupportGtk (Part II) + https://bugs.webkit.org/show_bug.cgi?id=48429 + + Moved more private method declared with WEBKIT_API to + DumpRenderTreeSupportGtk, since they were only being used by DRT. + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::executeCoreCommandByName): + (DumpRenderTreeSupportGtk::isCommandEnabled): + (DumpRenderTreeSupportGtk::whiteListAccessFromOrigin): + (DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + +2010-11-08 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson. + + [Gtk] Populate DumpRenderTreeSupportGtk + https://bugs.webkit.org/show_bug.cgi?id=48429 + + Moved most of the webkit_web_frame* methods defined as private APIs in webkitprivate.h + to DumpRenderTreeSupportGtk, as static class methods. These methods had + not gone throught the formal API review process and were only being used by DRT for now. + + The essence of each original method name were kept. For example + webkit_web_frame_get_children(...) was renamed to DumpRenderTreeSupportGtk::getFrameChildren(...), + and so on. + + Also some of the method bodies were changed to return non-glib types (gchar* -> CString). + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::getFrameChildren): + (DumpRenderTreeSupportGtk::getInnerText): + (DumpRenderTreeSupportGtk::dumpRenderTree): + (DumpRenderTreeSupportGtk::counterValueForElementById): + (DumpRenderTreeSupportGtk::pageNumberForElementById): + (DumpRenderTreeSupportGtk::numberOfPagesForFrame): + (DumpRenderTreeSupportGtk::getPendingUnloadEventCount): + (DumpRenderTreeSupportGtk::pauseAnimation): + (DumpRenderTreeSupportGtk::pauseTransition): + (DumpRenderTreeSupportGtk::pauseSvgAnimation): + (DumpRenderTreeSupportGtk::markerTextForListItem): + (DumpRenderTreeSupportGtk::numberOfActiveAnimations): + (DumpRenderTreeSupportGtk::suspendAnimations): + (DumpRenderTreeSupportGtk::resumeAnimations): + (DumpRenderTreeSupportGtk::clearMainFrameName): + (DumpRenderTreeSupportGtk::getFocusedAccessibleElement): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2010-12-02 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] DumpRenderTree has two copies of JavaScriptCore + https://bugs.webkit.org/show_bug.cgi?id=49877 + + Keep WebKit/WebCore symbols hidden. + + * GNUmakefile.am: Move the symbol visibility rules here, because + now JSC symbols are visible, but WebCore/WebKit symbols are hidden. + +2010-12-02 Daniel Bates <dbates@rim.com> + + Ignore WebKit/gtk/docs/GNUmakefile.in and WebKit/gtk/po/*.pot so that + these files do not appear in an svn stat. This change makes SVN + consistent with the current Git ignore behavior for these files. + + * docs: Added property svn:ignore. + * po: Added property svn:ignore. + +2010-12-01 Jia Pu <jpu@apple.com> + + Reviewed by Darin Adler. + + Support multiple correction candidates panel for misspelled word on Mac OS X. + https://bugs.webkit.org/show_bug.cgi?id=50137 + <rdar://problem/8568059> + + Adopted new function signature defined in base class. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::getGuessesForWord): + * WebCoreSupport/EditorClientGtk.h: + +2010-11-30 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Fix wrong type in assert return value + https://bugs.webkit.org/show_bug.cgi?id=50208 + + Use appropriate return type in different g_return_val_if_fail(). This + removes some compiler warning. + + * webkit/webkitwebdatasource.cpp: + (webkit_web_data_source_is_loading): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_page_number_for_element_by_id): + (webkit_web_frame_number_of_pages): + +2010-11-30 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + [GTK] Implement ROLE_COMBO_BOX + https://bugs.webkit.org/show_bug.cgi?id=25678 + + New test to check the implementation of the combo boxes. + + * tests/testatk.c: + (testWebkitAtkComboBox): New test, checking that the roles and the + implemented interfaces for a combo box and its descendants work. + (main): Added the new unit test. + +2010-11-30 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Test fast/events/mouseover-mouseout2.html crashes + https://bugs.webkit.org/show_bug.cgi?id=50214 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + * webkit/webkitwebview.cpp: + (webkit_web_view_query_tooltip): + +2010-11-30 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r72764. + http://trac.webkit.org/changeset/72764 + https://bugs.webkit.org/show_bug.cgi?id=50215 + + This change is causing assertion failures on the debug bots. + (Requested by mrobinson on #webkit). + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::notifyStatus): + * tests/testatk.c: + (main): + +2010-11-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + * NEWS: update for 1.3.7 release. + +2010-11-29 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Tooltips should be fully keyboard accessible + https://bugs.webkit.org/show_bug.cgi?id=25525 + + Position the tooltip under the current focused element when the + tooltip has been triggered using the keyboard. + + * webkit/webkitwebview.cpp: + (webkit_web_view_query_tooltip): + (webkit_web_view_show_help): + (webkit_web_view_class_init): + +2010-11-29 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Tooltips not shown when scrolling + https://bugs.webkit.org/show_bug.cgi?id=50143 + + Convert tooltip area to window coordinates so that tooltips are + shown even after scrolling. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + +2010-11-26 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Inspector: add a way to inspect a WebKitDOMNode + https://bugs.webkit.org/show_bug.cgi?id=49903 + + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_inspect_node): + * webkit/webkitwebinspector.h: + +2010-11-26 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] events missing when a document is (re)loaded + https://bugs.webkit.org/show_bug.cgi?id=25831 + + Emit the right signals when reloading a document. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::notifyAccessibilityStatus): New function, to make sure + the signals involved in reloading a document are properly emitted. + (WebKit::notifyStatus): Also notify accessibility if enabled. + + New unit test to check the signals are being actually emitted. + + * tests/testatk.c: + (stateChangedCb): Callback for 'state-change' signal emitted by + the accessible object associated to the webView. + (documentReloadCb): Callback for 'reload' signal. + (documentLoadCompleteCb): Callback for 'load-complete' signal. + (webviewLoadStatusChangedCb): Callback for 'notify::load-status' + signal, emitted by the WebKitWebView object (not the AtkObject). + (testWebkitAtkDocumentReloadEvents): New unit test. + (main): Added the new unit test. + +2010-11-24 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Make kit() methods return the proper type instead of gpointer + https://bugs.webkit.org/show_bug.cgi?id=50034 + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldDeleteRange): get rid of unneeded cast. + (WebKit::EditorClient::shouldShowDeleteInterface): ditto. + (WebKit::EditorClient::shouldBeginEditing): ditto. + (WebKit::EditorClient::shouldEndEditing): ditto. + (WebKit::EditorClient::shouldInsertText): ditto. + (WebKit::EditorClient::shouldChangeSelectedRange): ditto. + (WebKit::EditorClient::shouldApplyStyle): ditto. + (WebKit::EditorClient::shouldInsertNode): ditto. + * webkit/webkitprivate.cpp: + (WebKit::kit): ditto. + * webkit/webkitwebview.cpp: + (webkit_web_view_get_dom_document): ditto. + +2010-11-24 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Fix crashes in GTK+ bots. Use kit() instead of wrapFoo, otherwise + the DOM objects won't be in the cache and we'll ASSERT when + unreffing them. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldDeleteRange): use kit to get the + GObject wrapper for the DOM object. + (WebKit::EditorClient::shouldShowDeleteInterface): ditto. + (WebKit::EditorClient::shouldBeginEditing): ditto. + (WebKit::EditorClient::shouldEndEditing): ditto. + (WebKit::EditorClient::shouldInsertText): ditto. + (WebKit::EditorClient::shouldChangeSelectedRange): ditto. + (WebKit::EditorClient::shouldApplyStyle): ditto. + (WebKit::EditorClient::shouldInsertNode): ditto. + +2010-11-24 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] The WebKitWebView should expose a set of signals encapsulating the behavior of the EditorClient + https://bugs.webkit.org/show_bug.cgi?id=49143 + + Add signals that encapsulate the functionality of the Mac EditingDelegate. These signals + are private for now, but DRT consumes them to produce proper output for editing tests. + After some time, these may be part of the public API. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldDeleteRange): Fire the appropriate editing signal. + (WebKit::EditorClient::shouldShowDeleteInterface): Ditto. + (WebKit::EditorClient::shouldBeginEditing): Ditto. + (WebKit::EditorClient::shouldEndEditing): Ditto. + (WebKit::kit): Added helper function. + (WebKit::EditorClient::shouldInsertText): Fire the appropriate editing signal. + (WebKit::EditorClient::shouldChangeSelectedRange): Ditto. + (WebKit::EditorClient::shouldApplyStyle): Ditto. + (WebKit::EditorClient::didBeginEditing): Ditto. + (WebKit::EditorClient::respondToChangedContents): Ditto. + (WebKit::EditorClient::respondToChangedSelection): Ditto. + (WebKit::EditorClient::didEndEditing): Ditto. + (WebKit::EditorClient::shouldInsertNode): Ditto. + * webkit/webkitwebview.cpp: + (webkit_web_view_real_should_allow_editing_action): Added this default signal + callback which explicitly allows cancellable editing actions. + (webkit_web_view_class_init): Add new editing signal declarations to the view. + * webkit/webkitwebview.h: + * webkitmarshal.list: Added some new marshaling definitions. + +2010-11-24 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r72499. + http://trac.webkit.org/changeset/72499 + https://bugs.webkit.org/show_bug.cgi?id=50022 + + This change is causing crashes on the bots. (Requested by + mrobinson on #webkit). + + * tests/testatk.c: + (main): + +2010-11-23 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Fix IFrame DOM bindings API + https://bugs.webkit.org/show_bug.cgi?id=49980 + + * tests/testdomdocument.c: + (test_dom_document_garbage_collection): change to use the fixed + IFrame APIs. + +2010-11-23 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + focus issue with links that have tooltips + https://bugs.webkit.org/show_bug.cgi?id=49498 + + Set the area of the widget where the tooltip should be shown when + a new tooltip is set. Since the widget is the same (the view), if + the tooltip area is not set and a new tooltip is triggered while + the previous one is still visible, the text of the tooltip is + updated but its position doesn't change. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_query_tooltip): + +2010-11-21 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + [GTK] Implement ROLE_COMBO_BOX + https://bugs.webkit.org/show_bug.cgi?id=25678 + + New test to check the implementation of the combo boxes. + + * tests/testatk.c: + (testWebkitAtkComboBox): New test, checking that the roles and the + implemented interfaces for a combo box and its descendants work. + (main): Added the new unit test. + +2010-11-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Remove leftover code in unit test. + + * GNUmakefile.am: remove unneeded utils file in dependency list. + * tests/testdomdocument.c: + (main): do not change to the directory of a non existing resource + list. + +2010-11-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Memory managament for DOM GObject wrappers + https://bugs.webkit.org/show_bug.cgi?id=40302 + + Initial attempt to have a kind of poor man's garbage collection + for GObject DOM objects. We tie the object's lifecycle to their + parent Frame and/or its document; that is, all objects will be + collected when their parent frame is destroyed or when that frame + transitions to a new document. Manual management (calling + g_object_unref on them) is also allowed, and is required for + objects that are not in the DOM tree (eg NodeLists). + + * GNUmakefile.am: add testutils file to testdomdocument.c + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::setMainFrameDocumentReady): collect + DOM objects on document transition. + * tests/testdomdocument.c: + (dom_document_fixture_teardown): only destroy the view if it's not + already destroyed, since the new test detroys it on its own. + (test_dom_document_get_elements_by_tag_name): manually unref node list. + (test_dom_document_get_elements_by_class_name): ditto. + (test_dom_document_get_links): ditto. + (test_dom_document_garbage_collection): test all possible + scenarios for DOM object "garbage collection". + (main): add new test. + * tests/testdomnode.c: + (test_dom_node_hierarchy_navigation): manually unref node list. + (test_dom_node_insertion): ditto. + * webkit/webkithittestresult.cpp: + (webkit_hit_test_result_dispose): unref the inner node on dispose + now that the memory management model is clarified. + (webkit_hit_test_result_class_init): hook dispose. + * webkit/webkitwebframe.cpp: + (webkit_web_frame_core_frame_gone): clear DOM objects attached to this frame. + (webkit_web_frame_finalize): ditto. + +2010-11-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Fix introspection build, we were missing a -I flag. + + * GNUmakefile.am: + +2010-11-18 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] atk_text_get_selection returns the wrong offsets after a link + https://bugs.webkit.org/show_bug.cgi?id=49514 + + Updated test case to also chech this specific subcase. + + We need to explicitly check the case of having a selection in a + paragraph after an embedded object (i.e. a link) to make sure the + right calculations are being done when the paragraph is composed + of more than just one text object, and the current selection is + made only in one of them. + + * tests/testatk.c: + (testWebkitAtkTextSelections): Make sure that a selection after a + link in a paragraph is working ok when asking for the text + selection from the point of view of the paragraph. + +2010-11-17 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Changing any GNUmakefile.am in the source tree forces a rebuld of the DOM bindings and WebKit APi + https://bugs.webkit.org/show_bug.cgi?id=49400 + + Add GNUmakefile.am and include all WebKit API build rules. Make webkitenum.* + depend on this new file, instead of the generated GNUmakefile.am. + + * GNUmakefile.am: Copied from GNUmakefile.am. + +2010-11-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + Fix a typo that leads to emitting the wrong signal if it is done + by using the signals array. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2010-11-16 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Some key-press events can't be handled by WebView + https://bugs.webkit.org/show_bug.cgi?id=48986 + + The problem is that "popup-menu" and "show-help" signals are + handled by GtkTextView, as they are added to the key bindings set + of every widget in gtk_widget_class_init(). For all other bindings + handled by GtkTextView we are stopping the signal emission in + their callbacks, so we only need to do the same for "popup-menu" + and "show-help" signals. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::toggleOverwriteCallback): + (WebKit::popupMenuCallback): + (WebKit::showHelpCallback): + (WebKit::EditorClient::EditorClient): + +2010-11-16 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Show default context menu for the currently focused element when activated with keyboard + https://bugs.webkit.org/show_bug.cgi?id=49376 + + * webkit/webkitwebview.cpp: + (webkit_web_view_popup_menu_handler): + +2010-11-11 Joone Hur <joone@kldp.org> + + Reviewed by Antonio Gomes. + + [GTK][DRT] Implement LayoutTestController::nodesFromRect + https://bugs.webkit.org/show_bug.cgi?id=46598 + + Support nodesFromRect in DRT + + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: + (DumpRenderTreeSupportGtk::nodesFromRect): Added. + * WebCoreSupport/DumpRenderTreeSupportGtk.h: + +2010-11-11 Chang Shu <chang.shu@nokia.com> + + Reviewed by Antonio Gomes. + + [GTK] Replace "MoveForward"/"MoveBackward" with "MoveRight"/"MoveLeft" + to make spatial navigation work on input/textarea. + https://bugs.webkit.org/show_bug.cgi?id=49056 + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::moveCursorCallback): + +2010-11-08 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Link with target name set does not work + https://bugs.webkit.org/show_bug.cgi?id=48865 + + When a new page is created with a name (target=myFrame), the new + mainFrame could not be found because they where not stored in the + same PageGroup. As PageGroup are not exposed externally so the + simpliest solution is to use a global page group name. This also fixes + issue with visited link coloration across pages. After this change the + private function webkit_web_view_set_group_name() was no longer used + so it was removed completly. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::closeWindowSoon): + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2010-11-08 Alexey Proskuryakov <ap@apple.com> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=48685 + Notify UI process about focused frame + + Added an empty implementation of the new ChromeClient method. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::focusedFrameChanged): + * WebCoreSupport/ChromeClientGtk.h: + +2010-11-08 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Andreas Kling. + + [GTK] Error page templates are not filled properly + https://bugs.webkit.org/show_bug.cgi?id=49148 + + Replace a call to makeString with String::format. This was mistakenly + changed to makeString in an earlier commit. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + +2010-11-08 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + * NEWS: update for release. + +2010-11-08 Csaba Osztrogonac <ossy@webkit.org> + + Unreviewed, rolling out r71466. + http://trac.webkit.org/changeset/71466 + https://bugs.webkit.org/show_bug.cgi?id=48865 + + It broke layout tests on GTK bots. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::closeWindowSoon): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + (webkit_web_view_set_group_name): + +2010-11-07 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Rename Cache to MemoryCache + https://bugs.webkit.org/show_bug.cgi?id=49159 + + * webkit/webkitwebview.cpp: + +2010-11-05 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Link with target name set does not work correctly + https://bugs.webkit.org/show_bug.cgi?id=48865 + + When a new page is created with a name (target=myFrame), the new + mainFrame could not be found because they where not stored in the + same PageGroup. As PageGroup are not exposed externally so the + simpliest solution is to use a global page group name. This also fixes + issue with visited link coloration across pages. After this change the + private function webkit_web_view_set_group_name() was no longer used + so it was removed completly. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::closeWindowSoon): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2010-11-05 Chris Marrin <cmarrin@apple.com> + + Reviewed by Simon Fraser. + + Move resumeAnimations/suspendAnimations from Frame to AnimationController. + https://bugs.webkit.org/show_bug.cgi?id=49073 + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_suspend_animations): + (webkit_web_frame_resume_animations): + +2010-11-05 Chris Marrin <cmarrin@apple.com> + + Unreviewed. + + Small fix to GTK build + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_suspend_animations): + (webkit_web_frame_resume_animations): + +2010-11-05 Chris Marrin <cmarrin@apple.com> + + Reviewed by Simon Fraser. + + Make suspendAnimations/resumeAnimations and setCSSAnimations traverse through subframes and remember state + https://bugs.webkit.org/show_bug.cgi?id=46945 + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_suspend_animations): + (webkit_web_frame_resume_animations): + +2010-11-03 Daniel Bates <dbates@rim.com> + + For unnamed frames, window.name returns a generated name + https://bugs.webkit.org/show_bug.cgi?id=6751 + + Part 1 of 2. + + Substitute FrameTree::uniqueName() for FrameTree::name() in the GTK port. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_name): + +2010-11-02 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Adam Barth. + + [Cairo] Remove PlatformRefPtrCairo + https://bugs.webkit.org/show_bug.cgi?id=48192 + + Replace instances of PlatformRefPtr smart pointers that wrap Cairo + types with RefPtrs. + + * WebCoreSupport/DragClientGtk.cpp: Use RefPtr instead of PlatformRefPtr. + (WebKit::dragIconWindowDrawEventCallback): + * WebCoreSupport/DragClientGtk.h: Ditto. + +2010-11-02 Daniel Bates <dbates@rim.com> + + Reviewed by Martin Robinson. + + Set frame name before appending it to the frame tree in the Apple Windows, + GTK, and EFL ports + https://bugs.webkit.org/show_bug.cgi?id=48806 + + Make the frame creation process in the GTK-port consistent with the + Mac, Qt, and Haiku ports. In particular, set the name of the new + frame before it's appended to the frame tree. + + At this time we cannot test this change since it is being masked by + HTMLFrameElementBase::setName() <http://trac.webkit.org/browser/trunk/WebCore/html/HTMLFrameElementBase.cpp?rev=70976#L160>. + We'll be able to test this once we fix bug #6751. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2010-11-01 Jennifer Braithwaite <jennb@google.com> + + Reviewed by Martin Robinson. + + GTK: Update resource tracking when moving a frame between documents + https://bugs.webkit.org/show_bug.cgi?id=48362 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transferLoadingResourceFromPage): + Assign resource id to current web view and remove from former web view. + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_remove_resource): + Added. + +2010-11-01 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Cleanup needed in testatk.c file + https://bugs.webkit.org/show_bug.cgi?id=48759 + + Cleanup done in testatk.c, mainly addressing the following issues: + + - Removed any trace of extra main loops in tests, so now we just + spin the original main loop in all of them to get the a11y + objects. + + - As we no longer use the extra main loops, removed the bail_out + function, used along with g_idle_add() to stop those extra loops. + + - As we now spin the loop in every test, created a new function + waitForAccessibilityObjects() to write the loop just once. + + - Fixed name in incorrectly named test testWekitAtkTextSelections. + + - Alphabetically sorted the list of includes. + + - Renamed all identifiers to camel Case notation. + + - Declare variables when needed only (instead of declaring all of + them at the beginning of the function). + + - Don't declare two variables of the same type in the same line. + + - No more short names like 'obj', 'textObj' or 'alloc'. Use names + like 'object', 'textObject' and 'allocation' instead. + + - Fixed indentation. + + - Make sure all comments finish with '.' + + - Replace NULL's with 0's. + + * tests/testatk.c: + (waitForAccessibleObjects): New, manually spins the main context + to make sure accessible objects are created before continuing. + (testGetTextFunction): Fixed this function to be compliant with + the WebKit's coding style. + (runGetTextTests): Ditto. + (testWebkitAtkGetTextAtOffsetForms): Ditto. + (testWebkitAtkGetTextAtOffset): Ditto. + (testWebkitAtkGetTextAtOffsetNewlines): Ditto. + (testWebkitAtkGetTextAtOffsetTextarea): Ditto. + (testWebkitAtkGetTextAtOffsetTextInput): Ditto. + (testWebkitAtkGetTextInParagraphAndBodySimple): Ditto. + (testWebkitAtkGetTextInParagraphAndBodyModerate): Ditto. + (testWebkitAtkGetTextInTable): Ditto. + (testWebkitAtkGetHeadersInTable): Ditto. + (compAtkAttribute): Ditto. + (atkAttributeSetAttributeNameHasValue): Ditto. + (testWebkitAtkTextAttributes): Ditto. + (testWebkitAtkTextSelections): Ditto. + (testWebkitAtkGetExtents): Ditto. + (testWebkitAtkLayoutAndDataTables): Ditto. + (testWebkitAtkLinksWithInlineImages): Ditto. + (testWebkitAtkHypertextAndHyperlinks): Ditto. + (testWebkitAtkListsOfItems): Ditto. + (testWebkitAtkTextChangedNotifications): Ditto. + (main): Ditto. + +2010-11-01 Brady Eidson <beidson@apple.com> + + Reviewed by Anders Carlsson. + + <rdar://problem/7660547> and https://bugs.webkit.org/show_bug.cgi?id=48699 + Context menu support for WebKit 2. + + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::showContextMenu): + +2010-11-01 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Pasting markup into Thunderbird compose window produces no text + https://bugs.webkit.org/show_bug.cgi?id=43737 + + Added a test verifying that the meta tag prefix on markup data exists. + + * tests/testcopyandpaste.c: + (load_status_cb): Add a check for the meta tag prefix. + +2010-11-01 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] AtkHyperlink needs to be implemented + https://bugs.webkit.org/show_bug.cgi?id=33785 + + New test to ensure the AtkHypertext/AtkHyperlink stuff works. + + * tests/testatk.c: + (testWebkitAtkHypertextAndHyperlinks): New test, checking both the + implementation of the AtkHypertext interface, the subclass of the + AtkHyperlink abstract class, and the implementation of the + AtkAction interface in that subclass. + (main): Added the new unit test. + +2010-10-30 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Use new width for height APIs in GTK+ 3.x + https://bugs.webkit.org/show_bug.cgi?id=48709 + + Use the new width for height APIs in GTK+ 3.x, since size-request + is deprecated. + + For now we just return the same value for preferred and minimum + width/height, which should match the 2.x behavior. Probably we + could do something smarter for the minimum values. + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_preferred_width): return our preferred width. + (webkit_web_view_get_preferred_height): return our preferred height. + (webkit_web_view_class_init): hook the new default handlers. + +2010-10-29 Daniel Bates <dbates@rim.com> + + No review, rolling out 70971. + http://trac.webkit.org/changeset/70971 + https://bugs.webkit.org/show_bug.cgi?id=6751 + + Rolling out changeset 70971 <http://trac.webkit.org/changeset/70971> since + it caused layout test failures on all bots. In particular, the + child count in a generated frame name differs after this patch. We need + to look into this further. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_name): + +2010-10-28 Antonio Gomes <agomes@rim.com> + + Reviewed by Ojan Vafai. + + Needs a "LinuxEditingBehavior", perhaps with a better name + https://bugs.webkit.org/show_bug.cgi?id=36627 + + Added the corresponding GTK+ setting to WebCore's EditingUnixBehavior: WEBKIT_EDITING_BEHAVIOR_UNIX. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + * webkit/webkitwebsettings.h: + +2010-10-29 Daniel Bates <dbates@rim.com> + + Reviewed by Adam Barth. + + For unnamed frames, window.name returns a generated name + https://bugs.webkit.org/show_bug.cgi?id=6751 + + Modified GTK-port to use FrameTree::uniqueName(). + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_name): + +2010-10-29 Martin Robinson <mrobinson@igalia.com> + + Build fix for GTK+ after BackForwardListImpl introduction. + + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_new_with_web_view): + +2010-10-29 Darin Adler <darin@apple.com> + + Reviewed by Sam Weinig. + + Change BackForwardList clients to use BackForwardListImpl to prepare for further refactoring + https://bugs.webkit.org/show_bug.cgi?id=48574 + + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_dispose): + (webkit_web_back_forward_list_new_with_web_view): + (webkit_web_back_forward_list_go_forward): + (webkit_web_back_forward_list_go_back): + (webkit_web_back_forward_list_contains_item): + (webkit_web_back_forward_list_go_to_item): + (webkit_web_back_forward_list_get_forward_list_with_limit): + (webkit_web_back_forward_list_get_back_list_with_limit): + (webkit_web_back_forward_list_get_back_item): + (webkit_web_back_forward_list_get_current_item): + (webkit_web_back_forward_list_get_forward_item): + (webkit_web_back_forward_list_get_nth_item): + (webkit_web_back_forward_list_get_back_length): + (webkit_web_back_forward_list_get_forward_length): + (webkit_web_back_forward_list_get_limit): + (webkit_web_back_forward_list_set_limit): + (webkit_web_back_forward_list_add_item): + (webkit_web_back_forward_list_clear): + (WebKit::core): + * webkit/webkitwebview.cpp: + (webkit_web_view_set_maintains_back_forward_list): + (webkit_web_view_get_back_forward_list): + Use BackForwardListImpl. + +2010-10-29 Alexey Proskuryakov <ap@apple.com> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=48576 + Let WebKit2 client know when a frame is a frameset + + Added a blank implementation of the new FrameLoaderClient method. + + * WebCoreSupport/FrameLoaderClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidBecomeFrameset): + +2010-10-29 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Add the GtkScrollablePolicy property to the webview + https://bugs.webkit.org/show_bug.cgi?id=48357 + + Added the GtkScrollablePolicy properties to the webview widget, it + is now required for GtkScrollable widgets in GTK+ 3.x. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (setHorizontalScrollPolicy): Added. + (setVerticalScrollPolicy): Added. + (getHorizontalScrollPolicy): Added. + (getVerticalScrollPolicy): Added. + (webkit_web_view_get_property): + (webkit_web_view_set_property): + (webkit_web_view_class_init): + +2010-10-28 Sergio Villar Senin <svillar@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] WebKitWebFrame's load-status is not properly notified to the tests + https://bugs.webkit.org/show_bug.cgi?id=48048 + + "frame-created" signal must be issued before loading any data, + that way clients can correctly capture all the loading related + signals for that frame. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2010-10-27 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + getTextAtOffset returns incorrect results if a link includes text and an image + https://bugs.webkit.org/show_bug.cgi?id=47365 + + New test to make sure this bug is actually fixed. + + * tests/testatk.c: + (testWebkitAtkLinksWithInlineImages): New test. + (main): Added new test. + +2010-10-26 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson. + + [GTK] Implement DumpRenderTreeSupportGtk (similarly to DumpRenderTreeSupportQt idea) + https://bugs.webkit.org/show_bug.cgi?id=48199 + + Implemented an initial version of the DumpRenderTreeSupportGtk class. + The main idea is that it groups together the bodies of many LayoutTestController + methods, so they can directly access WebCore features. This way we eliminate the + need of adding APIs to WebKitGTK just to expand its test coverage through DRT. + + The DumpRenderTreeSupportGtk class so far includes a getter and setter for the WebKitTabToLinksPreferenceKey + property as a sample implementation. Also it makes it possible to unskip fast/events/tab-focus-anchor.html and + to fix stderr messages from all 22 spatial-navigation tests in fast/events/spatial-navigation. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::tabsToLinks): + * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: Added. + (DumpRenderTreeSupportGtk::DumpRenderTreeSupportGtk): + (DumpRenderTreeSupportGtk::~DumpRenderTreeSupportGtk): + (DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled): + (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled): Getter to the WebKitTabToLinksPreferenceKey property. + (DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain): Setter to the WebKitTabToLinksPreferenceKey property. + (DumpRenderTreeSupportGtk::linksIncludedInFocusChain): + * WebCoreSupport/DumpRenderTreeSupportGtk.h: Added. + +2010-10-26 Jenn Braithwaite <jennb@chromium.org> + + Reviewed by Dmitry Titov. + + Resource tracking failure when trying to move a frame between documents + https://bugs.webkit.org/show_bug.cgi?id=44713 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transferLoadingResourceFromPage): + Empty method. + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-10-26 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + [Gtk] Layout tables should indicate that they are not data tables via an object attribute + https://bugs.webkit.org/show_bug.cgi?id=35422 + + New unit test to check the 'layout-guess' attribute in tables. + + * tests/testatk.c: + (atkAttributeSetAttributeNameHasValue): New, looks for a attribute + with a specific value, by the name of attribute. + (atkAttributeSetContainsAttributeName): New, just checks whether + an attribute with a specified name is present in the set. + (atkAttributeSetAttributeHasValue): Modified to relay on the new + function atkAttributeSetAttributeNameHasValue(). + (testWebkitAtkLayoutAndDataTables): New test. + (main): Added the new test. + +2010-10-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Port to new GtkScrollable interface in GTK+ 3.x + https://bugs.webkit.org/show_bug.cgi?id=48202 + + Use the new GtkScrollable interface when compiling against GTK+ + 3.x. + + * webkit/webkitwebview.cpp: + (setHorizontalAdjustment): + (setVerticalAdjustment): + (getHorizontalAdjustment): + (getVerticalAdjustment): + (webkit_web_view_get_property): + (webkit_web_view_set_property): + (webkit_web_view_class_init): + +2010-10-22 Sam Weinig <sam@webkit.org> + + Reviewed by Anders Carlsson. + + WebKit2 needs to pass the current event modifier flags when requesting a new window + https://bugs.webkit.org/show_bug.cgi?id=48140 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::createWindow): + * WebCoreSupport/ChromeClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchCreatePage): + * WebCoreSupport/FrameLoaderClientGtk.h: + Add NavigationAction parameter. + +2010-10-20 Philippe Normand <pnormand@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] use gtk_widget_hide instead of gtk_widget_hide_all in the fullscreen video conroller + https://bugs.webkit.org/show_bug.cgi?id=47972 + + * WebCoreSupport/FullscreenVideoController.cpp: + (FullscreenVideoController::hideHud): + (FullscreenVideoController::exitFullscreen): + +2010-10-19 Joone Hur <joone@kldp.org> + + Reviewed by Martin Robinson. + + [GTK] Needs fixing mistyped comments in the API documentation + https://bugs.webkit.org/show_bug.cgi?id=47656 + + Fixed mistyped comments in the API documenentation. + + * webkit/webkitwebsettings.cpp: Fixed a mistyped comment in the the section block. + * webkit/webkitwebwindowfeatures.cpp: Fixed a mistyped comment in the section block. + +2010-10-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + * NEWS: update for 1.3.5 release. + * docs/webkitgtk-sections.txt: add new APIs. + +2010-10-18 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Simon Fraser. + + Web Inspector: [crash] when Inspector Open in CSSStyleSelector::loadPendingImages(). + https://bugs.webkit.org/show_bug.cgi?id=46224 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::sendMessageToFrontend): + +2010-10-14 Antonio Gomes <agomes@rim.com> + + Reviewed by Martin Robinson and Xan Lopez. + + [Gtk]: DRT does not support frame flattening testing + https://bugs.webkit.org/show_bug.cgi?id=38650 + + Implement enable-frame-flattening API for Gtk+. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-10-15 Nikolas Zimmermann <nzimmermann@rim.com> + + Reviewed by Dirk Schulze. + + Replace some String::format() usages by StringConcatenate in WebKit + https://bugs.webkit.org/show_bug.cgi?id=47714 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * webkit/webkitwebsettings.cpp: + (webkitOSVersion): + (webkitUserAgent): + +2010-10-14 Joone Hur <joone@kldp.org> + + Reviewed by Andreas Kling. + + [GTK] google.co.kr was missed when checking Google domains + https://bugs.webkit.org/show_bug.cgi?id=47652 + + WebKitGtk+ maintains a list of Google domains for working well with Google sites. + Add google.co.kr also to the list to be checked with other Google domains. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::initializeDomainsList): Added google.co.kr. + +2010-10-13 Sergio Villar Senin <svillar@igalia.com> + + Reviewed by Martin Robinson. + + WebKitGtk+ to use the new API from the imported SoupURILoader code + + [GTK] Add HTTP caching support + https://bugs.webkit.org/show_bug.cgi?id=44261 + + ResourceHandleInternal m_msg is now called m_soupMessage. + + * webkit/webkitdownload.cpp: + (webkit_download_new_with_handle): + (webkit_download_start): + +2010-10-13 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Remove more warnings from the g-i scanner run + https://bugs.webkit.org/show_bug.cgi?id=47255 + + Fixes almost all warnings coming from the g-i scanner. + + * webkit/webkitsecurityorigin.cpp: Rename parameter names in + gtk-doc blurb to the actual name of the parameter. + * webkit/webkitsoupauthdialog.c: ditto. + (webkit_soup_auth_dialog_class_init): Write missing doc for the + 'current-toplevel' signal. + * webkit/webkitsoupauthdialog.h: Rename signal parameter to its + actual name. + * webkit/webkitwebdatabase.cpp: Rename parameter names in + gtk-doc blurb to the actual name of the parameter. + * webkit/webkitwebinspector.cpp: ditto. + (webkit_web_inspector_class_init): ditto. + * webkit/webkitwebview.cpp: ditto. + (webkit_web_view_class_init): ditto. + * webkit/webkitwebview.h: Rename the parameter names to be in sync + with the ones we use in the function definition. + +2010-10-12 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r69589. + http://trac.webkit.org/changeset/69589 + https://bugs.webkit.org/show_bug.cgi?id=47547 + + Wrong patch landed from a bug with two patches (Requested by + mrobinson on #webkit). + + * webkit/webkitdownload.cpp: + (webkit_download_new_with_handle): + (webkit_download_start): + +2010-10-12 Sergio Villar Senin <svillar@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Add HTTP caching support + https://bugs.webkit.org/show_bug.cgi?id=44261 + + ResourceHandle's m_msg renamed to m_soupMsg and it's also now a PlatformRefPtr + + * webkit/webkitdownload.cpp: + (webkit_download_new_with_handle): + (webkit_download_start): + +2010-10-09 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Removed unused callback in webkitwebview + https://bugs.webkit.org/show_bug.cgi?id=47092 + + In webkit_web_view_forward_context_menu_event() a callback is + connected for the destroy signal of the popup menu, however we + reuse the same menu always, holding a ref to it, so it's not + destroyed when withdrawn by the user. + + * webkit/webkitwebview.cpp: + (webkit_web_view_forward_context_menu_event): + +2010-10-08 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Remove duplicate code in WebKit/gtk/WebCoreSupport/DragClientGtk.cpp + https://bugs.webkit.org/show_bug.cgi?id=47367 + + Remove as much duplicate code as possible from DragClientGtk. Most of this code + is GTK2/GTK3 independent, so only the bits that aren't should be protected by + #ifdefs. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::dragIconWindowDrawEventCallback): Modified the name of this callback + so that it is shared between build types. + (WebKit::DragClient::DragClient): Updated the signal connectors to reflect the change above. + (WebKit::DragClient::~DragClient): The build types share the callback name, so remove + the #ifdef here. + (WebKit::DragClient::drawDragIconWindow): Changed the name of this method and make it + independent of the build type. + * WebCoreSupport/DragClientGtk.h: Update method declaration and remove #ifdefs. + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Use draw instead of expose_event in WebView when building with gtk3 + https://bugs.webkit.org/show_bug.cgi?id=47338 + + * webkit/webkitwebview.cpp: + (webkit_web_view_expose_event): + (webkit_web_view_draw): + (webkit_web_view_class_init): + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Don't use GtkObject + https://bugs.webkit.org/show_bug.cgi?id=47090 + + GtkObject has been removed in gtk3. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::generateEditorCommands): + * WebCoreSupport/FullscreenVideoController.cpp: + (FullscreenVideoController::createHud): + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix the build for GTK+ 3 + https://bugs.webkit.org/show_bug.cgi?id=47249 + + Use GdkVisual instead of GdkColormap. GdkColormap has been removed + in gtk3 + + * webkit/webkitwebview.cpp: + (webkit_web_view_realize): + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix the build for GTK+ 3 + https://bugs.webkit.org/show_bug.cgi?id=47249 + + Do not use GdkDrawable deprecated API. Some methods of GdkDrawable + are deprecated in gtk2 and have been removed in gtk3. Equivalent + API has been added to GdkWindow. + + * tests/testcopyandpaste.c: + (runPasteTestCallback): + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Use draw signal instead of expose_event in DragClientGtk when building with gtk3 + https://bugs.webkit.org/show_bug.cgi?id=47326 + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::dragIconWindowDrawCallback): + (WebKit::DragClient::DragClient): + (WebKit::DragClient::~DragClient): + (WebKit::DragClient::startDrag): + (WebKit::DragClient::dragIconWindowDraw): + * WebCoreSupport/DragClientGtk.h: + +2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix the build for GTK+ 3 + https://bugs.webkit.org/show_bug.cgi?id=47249 + + Don't use gtk_size_request_get_size(). It has been removed, + gtk_widget_get_preferred_size() should be used instead + + * webkit/webkitwebview.cpp: + (PopupMenuPositionFunc): + +2010-10-06 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r69201. + http://trac.webkit.org/changeset/69201 + https://bugs.webkit.org/show_bug.cgi?id=47279 + + This change broke the WebKitGTK+ build for GTK+ 2.0. + (Requested by mrobinson on #webkit). + + * tests/testcopyandpaste.c: + (runPasteTestCallback): + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): + +2010-10-06 Carlos Garcia Campos <cgarcia@igalia.com> + + Reviewed by Xan Lopez. + + Port to gtk+3 (2.91.0) + https://bugs.webkit.org/show_bug.cgi?id=47249 + + Do not use GdkDrawable deprecated API + + Some methods of GdkDrawable are deprecated in gtk2 and have been + remmoved in gtk3. Equivalent API has been added to GdkWindow. + + * tests/testcopyandpaste.c: + (runPasteTestCallback): + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): + +2010-09-28 Jenn Braithwaite <jennb@chromium.org> + + Reviewed by Dmitry Titov. + + Added oldPage param to FrameLoaderClient::didTransferChildFrameToNewDocument. + https://bugs.webkit.org/show_bug.cgi?id=46663 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-09-27 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + [Gtk] Adjust atk_text_get_text_at_offset to account for bullets/numbers in list items + https://bugs.webkit.org/show_bug.cgi?id=45381 + + Updated test to match the new exposure of list item markers. + + Also, added some extra assertions in that test to make sure the + accessible objects associated to the items implement AtkText. + + * tests/testatk.c: + (testWebkitAtkListsOfItems): + (main): + +2010-09-27 Philippe Normand <pnormand@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Doesn't build with gtk+ 2.14 + https://bugs.webkit.org/show_bug.cgi?id=46565 + + Fixed the build for GTK+ 2.14. Don't use gdk_window_get_cursor() + for that GTK+ version as I found no acceptable way to work-around + its absence. + + * WebCoreSupport/FullscreenVideoController.cpp: + (FullscreenVideoController::showHud): + (FullscreenVideoController::hideHud): + (FullscreenVideoController::enterFullscreen): + +2010-09-26 Jenn Braithwaite <jennb@chromium.org> + + Reviewed by Adam Barth. + + GTK client needs updating when live iframe element is moved + between pages. + https://bugs.webkit.org/show_bug.cgi?id=46300 + + Test: fast/frames/iframe-reparenting-adopt-node.html + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument): + Update the webView for the frame to match the parent frame's + webView. + +2010-09-24 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] opening local files on win32 + https://bugs.webkit.org/show_bug.cgi?id=31066 + + Add tests that check the mime type returned by local files loaded via file URLs. + + * tests/testmimehandling.c: + (testRemoteMimeType): Added. + (testLocalMimeType): Added. + (main): Run tests by using g_test_add_data_func with either + testRemoteMimeType or testLocalMimeType. + +2010-09-23 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Nate Chapin. + + [GTK] Some tests from r68174 fail on the GTK+ bots + https://bugs.webkit.org/show_bug.cgi?id=46396 + + Fix since version number in this new WebKitWebSettings property. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): Fix the since version number. + +2010-09-23 Nate Chapin <japhet@chromium.org> + + Unreviewed, build fix. + + Add a missing comma in webkitwebsettings.cpp. + + * webkit/webkitwebsettings.cpp: + +2010-09-23 Nate Chapin <japhet@chromium.org> + + Reviewed by Darin Fisher. + + Add hyperlink auditing settings (i.e., <a ping>). + https://bugs.webkit.org/show_bug.cgi?id=30458 + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-09-22 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Replace instances of g_timeout_add() with g_idle_add() in testatk.c + https://bugs.webkit.org/show_bug.cgi?id=46284 + + Use g_idle_add() whenever g_timeout_add() was being used. + + This is desired because it's better to rely on the main loop to + decide when it's a good moment to execute the task (when idle) + than manually setting a timeout, which also sets a minimum amount + of time needed to get the function executed. + + * tests/testatk.c: + (testWekitAtkTextSelections): + (testWebkitAtkGetExtents): + (testWebkitAtkListsOfItems): + (main): + +2010-09-22 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] object:text-changed events should be emitted for entries and password text + https://bugs.webkit.org/show_bug.cgi?id=25898 + + New unit test to make sure text-changed signals are emitted + + * tests/testatk.c: + (textChangedCb): New. Signal handler for the + text-changed::insert and text-changed::delete signals. + (checkTextChangesAndBailOut): New. Source function to check + the global result of the test and quit from the main loop. + (testWebkitAtkTextChangedNotifications): New test. + (main): + +2010-09-22 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + Added information about drop shadow improvements to the NEWS file. + + * NEWS: Added information about drop shadow improvements. + +2010-09-21 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Fix transfer annotations for WebKitGTK+ static API + https://bugs.webkit.org/show_bug.cgi?id=46244 + + Deal with all the warnings related to transfer issues. Mostly the + problem was the transfer being missing, but there were also typos + in the function name or missing ':' at the end of the function + name in the gtk-doc. + + * webkit/webkitdownload.cpp: + * webkit/webkitnetworkrequest.cpp: + * webkit/webkitnetworkresponse.cpp: + * webkit/webkitsecurityorigin.cpp: + * webkit/webkitwebdatabase.cpp: + * webkit/webkitwebdatasource.cpp: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebinspector.cpp: + * webkit/webkitwebresource.cpp: + * webkit/webkitwebsettings.cpp: + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + (webkit_web_view_get_main_frame): + +2010-09-21 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.3.4 release. + + * NEWS: + +2010-09-17 Darin Adler <darin@apple.com> + + Reviewed by Sam Weinig. + + REGRESSION (r60104): Zoom level is unexpectedly reset on page reload + https://bugs.webkit.org/show_bug.cgi?id=42863 + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_zoom_level): + (webkit_web_view_apply_zoom_level): + (webkit_web_view_set_full_content_zoom): + Call functions on Frame instead of FrameView. + +2010-09-16 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Implement dissolveDragImageToFraction + https://bugs.webkit.org/show_bug.cgi?id=45826 + + To support full alpha in the drag icon, changed the drag icon to be a + GtkWindow with an RGBA colormap. Added logic to support painting the drag + image to this window during the expose event. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::dragIconWindowExposeEventCallback): Added. + (WebKit::DragClient::DragClient): Initialize the new drag icon window. + (WebKit::DragClient::~DragClient): Disconnect the expose event signal. + (WebKit::DragClient::startDrag): Resize the drag icon window the appropriate size and + if necessary, set its colormap. + (WebKit::DragClient::dragIconWindowExposeEvent): Added. + * WebCoreSupport/DragClientGtk.h: Added new member and method declarations. + +2010-09-14 Philippe Normand <pnormand@igalia.com> + + Reviewed by Eric Carlson and Martin Robinson. + + [GTK] eventSender.contextClick() should return the contents of the context menu + https://bugs.webkit.org/show_bug.cgi?id=39102 + + New private WebView API to retrieve the context-menu widget. This + is used by DRT only. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_context_menu): + +2010-09-16 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + GTK+ 3.x. updates, gtk_widget_size_request is deprecated and + "activate-slider" style property for scrollbars is gone. + + * webkit/webkitwebview.cpp: + (PopupMenuPositionFunc): + +2010-09-15 Martin Robinson <mrobinson@igalia.com> + + Reviewed by David Levin. + + [GTK] [REGRESSION] r67591 broke the testwebbackforwardlist API test and introduced a memory leak + https://bugs.webkit.org/show_bug.cgi?id=45865 + + When initializing the backForwardList private member of the WebView, do + so with adoptPlatformRef to prevent a memory leak. + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): Initialize member with adoptPlatformRef. + +2010-09-15 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Eric Seidel. + + [Gtk] Use GOwnPtr for code that needs it + https://bugs.webkit.org/show_bug.cgi?id=21594 + + Convert as reference counted private members of WebKitWebView to + smart pointers as possible. This removes a lot of unecessary manual + memory management. Also convert some pointer members away from pointer + types, now that we are sure their destructors are called. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::inputMethodsMenuItem): Updated to reflect PlatformRefPtr changes. + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): Ditto. + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::setInputMethodState): Ditto. + (WebKit::EditorClient::respondToChangedSelection): Ditto. + (WebKit::EditorClient::handleInputMethodKeydown): Ditto. + (WebKit::EditorClient::handleInputMethodMousePress): Ditto. + (WebKit::EditorClient::EditorClient): Ditto. + (WebKit::EditorClient::~EditorClient): Ditto. + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): Ditto. + * webkit/webkitprivate.h: Ditto. + * webkit/webkitwebview.cpp: Ditto. + (destroy_menu_cb): Ditto. + (webkit_web_view_forward_context_menu_event): Ditto. + (webkit_web_view_key_release_event): Ditto. + (webkit_web_view_button_press_event): Ditto. + (webkit_web_view_button_release_event): Ditto. + (webkit_web_view_focus_in_event): Ditto. + (webkit_web_view_focus_out_event): Ditto. + (webkit_web_view_realize): Ditto. + (webkit_web_view_set_scroll_adjustments): Ditto. + (webkit_web_view_dispose): Changed all g_object_unref calls to + PlatformRefPtr.clear(). Although this will also be done by the manual + call to the WebKitWebViewPrivate destructor, the order that these + fields are zero'd in is still very sensitive. + (webkit_web_view_finalize): Updated to reflect PlatformRefPtr changes. + (webViewGetDPI): Ditto. + (webkit_web_view_screen_changed): Ditto. + (webkit_web_view_drag_end): Ditto. + (webkit_web_view_drag_data_get): Ditto. + (doDragLeaveLater): Ditto. + (webkit_web_view_drag_leave): Ditto. + (webkit_web_view_drag_motion): Ditto. + (webkit_web_view_drag_data_received): Ditto. + (webkit_web_view_drag_drop): Ditto. + (webkit_web_view_get_im_context): Ditto. + (webkit_web_view_update_settings): Ditto. + (webkit_web_view_init): Ditto. + (webkit_web_view_set_settings): Ditto. + (webkit_web_view_get_settings): Ditto. + (webkit_web_view_get_inspector): Ditto. + (webkit_web_view_set_window_features): Ditto. + (webkit_web_view_get_window_features): Ditto. + (webkit_web_view_get_back_forward_list): Ditto. + (webkit_web_view_zoom_in): Ditto. + (webkit_web_view_zoom_out): Ditto. + (webkit_web_view_add_resource): Ditto. + (webkit_web_view_get_resource): Ditto. + (webkit_web_view_get_main_resource): Ditto. + (webkit_web_view_clear_resources): Ditto. + (webkit_web_view_get_subresources): Ditto. + +2010-09-14 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] fast/events/keydown-numpad-keys.html produces many GLib warnings + https://bugs.webkit.org/show_bug.cgi?id=45775 + + Handle the toggle-overwrite signal on the GtkTextView used for generating editing + commands. Ignore this signals, as the default handler assumes that the GtkTextView + has a layout and this one does not. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::toggleOverwriteCallback): Added. Cancels the default handler. + (WebKit::EditorClient::EditorClient): Attach a handler for toggle-overwrite. + +2010-09-14 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Yury Semikhatsky. + + Web Inspector: Provide network-based load timing. + Before this change, inspector used timers taken from + within WebCore notifications (that are by definition + synchronous and serialized). As a result, timing was + affected by the routines running on the main thread + (JavaScript and such). + https://bugs.webkit.org/show_bug.cgi?id=45664 + + * webkit/webkitdownload.cpp: + (DownloadClient::didFinishLoading): + +2010-09-15 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r67551. + http://trac.webkit.org/changeset/67551 + https://bugs.webkit.org/show_bug.cgi?id=45816 + + "Plugin tests fail" (Requested by yurys on #webkit). + + * webkit/webkitdownload.cpp: + (DownloadClient::didFinishLoading): + +2010-09-14 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Yury Semikhatsky. + + Web Inspector: Provide network-based load timing. + Before this change, inspector used timers taken from + within WebCore notifications (that are by definition + synchronous and serialized). As a result, timing was + affected by the routines running on the main thread + (JavaScript and such). + https://bugs.webkit.org/show_bug.cgi?id=45664 + + * webkit/webkitdownload.cpp: + (DownloadClient::didFinishLoading): + +2010-09-13 Enrica Casucci <enrica@apple.com> + + Reviewed by Sam Weinig. + + Paste should be implemented in WebCore like Copy and Cut for Mac also. + https://bugs.webkit.org/show_bug.cgi?id=45494 + <rdar://problem/7660537> + + On the Mac platform, the implementation of the paste operation is all done + at the WebKit level. In order to support it on WebKit2 it is necessary to + refactor the code and move this functionality at the level of WebCore like + we already have on Windows. + The original code relies on some in AppKit functions that call back into + WebKit causing problems in WebKit2. All this functionality has been moved + at the level of the editor client where it can be dealt with appropriately. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::canShowMIMETypeAsHTML): Added stub. + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-09-13 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Provide unit tests for AtkText's text selection functions + https://bugs.webkit.org/show_bug.cgi?id=43919 + + New tests to check getting, setting and removing text selections + + * tests/testatk.c: + (testWekitAtkTextSelections): New unit tests to check all the text + selection related functions altogether through a single test + function. + (main): + + Make sure that code dependant on getting information from the + clipboard gets executed only when there's a GDK window associated + to the webview widget, as that's not the case when executing the + unit tests (the wedbview is not inside of any toplevel window) and + will make the tests crash if not taken into account. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::respondToChangedSelection): + +2010-09-11 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] Make introspection work with g-o-i 0.9.5 + https://bugs.webkit.org/show_bug.cgi?id=45590 + + Use new type syntax and bump version number of the gir file. + + * JSCore.gir.in: + +2010-09-10 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + Reviewed by Darin Adler. + + Add NetworkingContext to avoid layer violations + https://bugs.webkit.org/show_bug.cgi?id=42292 + + * webkit/webkitdownload.cpp: + (webkit_download_start): + * webkit/webkitprivate.cpp: + (currentToplevelCallback): + +2010-09-10 Sam Weinig <sam@webkit.org> + + Fix GTK build. + + * webkit/webkitwebview.cpp: + (webkit_web_view_set_full_content_zoom): + +2010-09-10 Sam Weinig <sam@webkit.org> + + Reviewed by Darin Adler. + + Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom. + Precursor to <rdar://problem/7660657> + https://bugs.webkit.org/show_bug.cgi?id=45522 + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_zoom_level): + (webkit_web_view_apply_zoom_level): + (webkit_web_view_set_full_content_zoom): + +2010-09-10 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Fix warnings because of bad assignments in testatk.c + https://bugs.webkit.org/show_bug.cgi?id=45538 + + Use AtkObject and AtkText instances properly in the code. + + * tests/testatk.c: + (testWebkitAtkListsOfItems): + +2010-09-10 Adam Barth <abarth@webkit.org> + + Reviewed by Darin Fisher. + + Move code from WebKit-layer to DocumentLoader + https://bugs.webkit.org/show_bug.cgi?id=45569 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + +2010-09-10 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Main resource bytes shouldn't bounce through FrameLoader + https://bugs.webkit.org/show_bug.cgi?id=45496 + + Now return the bytes to the DocumentLoader. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + +2010-09-10 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Placement new / manual destructor invocation should be used on private GObject memory + https://bugs.webkit.org/show_bug.cgi?id=45550 + + GLib allocates and deallocates GObject private data structs itself. When + those structs contain C++ members, their constructors and destructors are not + called. This is not only dangerous, it makes RefPtr-type smart pointers much + less useful. We can fix this problem by calling placement new on the private + data struct during instance initialization and calling the destructor during + finalization. + + This patch takes that approach and switches plain char* members of + WebKitWebView (with manual memory allocation) to use CString. + + * webkit/webkitprivate.h: Switch char* members to CString. + * webkit/webkitwebview.cpp: + (webkit_web_view_finalize): Manually call the destructor on the private + data. Remove manual deallocation of members which are now CString. + (webkit_web_view_query_tooltip): Update to reflect CString change. + (webkit_web_view_init): Use placement new to initialize C++ members of + the private data section. + (webkit_web_view_get_encoding): Update to reflect CString change. + (webkit_web_view_get_custom_encoding): Ditto. + (webkit_web_view_add_resource): Ditto. + (webkit_web_view_get_resource): Ditto. + (webkit_web_view_clear_resources): Ditto. + (webkit_web_view_set_tooltip_text): Ditto. + (webkit_web_view_get_icon_uri): Ditto. + +2010-09-10 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Martin Robinson. + + [GTK] Google sites do not like WebKitGTK+ + https://bugs.webkit.org/show_bug.cgi?id=39617 + + Special-case Google domains, and spoof User-Agent when talking to + them, to stop being treated as a second-class citizen. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::initializeDomainsList): + (WebKit::isGoogleDomain): + (WebKit::FrameLoaderClient::userAgent): If enable-site-specific-quirks + is enabled, send the standard WebKit User-Agent string, disregarding the + custom one set by the browser for Google domains. + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (webkitPlatform): Fix style, and simplify. + (webkitOSVersion): Ditto. + (webkitUserAgent): Add the Version/x.y string Safari has been + using since Safari 2.2. + +2010-09-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Fix compilation with GTK+ 3.x. + + GDK key macros were renamed from GDK_FOO to GDK_KEY_FOO, we need + to include the compat header provided if we want to keep using the + old names. + + * WebCoreSupport/FullscreenVideoController.cpp: include GtkVersioning.h + +2010-09-08 Darin Adler <darin@apple.com> + + Reviewed by Adam Barth. + + Move functions from Frame to Editor as planned + https://bugs.webkit.org/show_bug.cgi?id=45218 + + * webkit/webkitwebview.cpp: + (webkit_web_view_set_highlight_text_matches): + (webkit_web_view_get_selected_text): + (webkit_web_view_set_editable): + Changed call sites to use editor(). + +2010-09-09 Philippe Normand <pnormand@igalia.com> + + Reviewed by Martin Robinson. + + [GTK] testmimehandling falsely succeeds testing Ogg mime type + https://bugs.webkit.org/show_bug.cgi?id=45349 + + Make this actually test an ogg file request instead of pdf and + changed the expected result to match libsoup content-sniffing + result in the case of ogg/vorbis file. + + * tests/testmimehandling.c: + (mime_type_policy_decision_requested_cb): + (test_mime_ogg): + +2010-09-08 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] A list item's number/bullet should not be a child of that list item + https://bugs.webkit.org/show_bug.cgi?id=45190 + + New unit test added. + + * tests/testatk.c: + (testWebkitAtkListsOfItems): New test to check ordered/unordered + list of items are properly exposed to AT technologies. + (main): + +2010-09-07 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Fix some feature guards + https://bugs.webkit.org/show_bug.cgi?id=45302 + + * webkit/webkitprivate.h: Add ENABLE(VIDEO) guards for video specific members. + +2010-09-03 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + Reviewed by Darin Adler. + + Add NetworkingContext to avoid layer violations + https://bugs.webkit.org/show_bug.cgi?id=42292 + + Add GTK's specific implementation of FrameNetworkingContext. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createNetworkingContext): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-09-03 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Dialog separators are gone in GTK+ 3.x. + + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + +2010-09-02 Yury Semikhatsky <yurys@chromium.org> + + Reviewed by Pavel Feldman. + + REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector + https://bugs.webkit.org/show_bug.cgi?id=44230 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::closeWindow): + (WebKit::InspectorFrontendClient::disconnectFromBackend): + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-31 Dave Hyatt <hyatt@apple.com> + + Reviewed by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=44863, disentangle style recalc from layout, so that + the former can occur in more places without having to do the latter. + + * webkit/webkitwebview.cpp: + (webkit_web_view_expose_event): + +2010-08-31 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Isolate all GTK+ typedefs into one file + https://bugs.webkit.org/show_bug.cgi?id=44900 + + * WebCoreSupport/EditorClientGtk.h: Remove GTK+ typedefs. + * WebCoreSupport/FullscreenVideoController.h: Ditto. + +2010-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + Preparations for the 1.3.4 release. + + * NEWS: + * docs/webkitgtk-docs.sgml: + +2010-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Minor documentation typo fix. + + * webkit/webkitwebview.cpp: + +2010-08-30 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Martin Robinson. + + [Gtk] gdk_display_get_core_pointer and gdk_device_get_core_pointer + are deprecated + https://bugs.webkit.org/show_bug.cgi?id=44787 + + We have replaced GtkVersioning.cpp with GtkVersioning.c and + created a function (getDefaultGDKPointerDevice) to get the pointer + of the window with the new APIs. We added that function to DRT and + copyandpaste unit test. + + * tests/testcopyandpaste.c: + (runPasteTestCallback): + +2010-08-30 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r66198. + http://trac.webkit.org/changeset/66198 + https://bugs.webkit.org/show_bug.cgi?id=44856 + + It made tests crash on Qt bot (Requested by Ossy_ on #webkit). + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::closeWindow): + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-27 Yury Semikhatsky <yurys@chromium.org> + + Reviewed by Pavel Feldman. + + REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector + https://bugs.webkit.org/show_bug.cgi?id=44230 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::closeWindow): + (WebKit::InspectorFrontendClient::disconnectFromBackend): + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-26 Yury Semikhatsky <yurys@chromium.org> + + Unreviewed. Revert r66103 since Qt tests are failing. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::closeWindow): + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-26 Yury Semikhatsky <yurys@chromium.org> + + Reviewed by Pavel Feldman. + + REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector + https://bugs.webkit.org/show_bug.cgi?id=44230 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::closeWindow): + (WebKit::InspectorFrontendClient::disconnectFromBackend): + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-26 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Martin Robinson. + + [GTK] WebKitGTK+ needs proper introspection annotation for most types and methods + https://bugs.webkit.org/show_bug.cgi?id=44565 + + Add documentation and introspection specific information to a few + getter and setter methods. + + * webkit/webkitwebview.cpp: + +2010-08-25 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + confirm dialog should show OK/Cancel instead of Yes/No for consistency + https://bugs.webkit.org/show_bug.cgi?id=32877 + + Change the button labels for the fallback confirmation dialog to be + OK and Cancel. + + * webkit/webkitwebview.cpp: + (webkit_web_view_script_dialog): + +2010-08-25 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + Cairo and EFL port shouldn't depend on glib. + https://bugs.webkit.org/show_bug.cgi?id=44354 + + Replace occurrences of GRefPtr and adoptGRef with PlatformRefPtr and + adoptPlatformRef. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::requestGeolocationPermissionForFrame): + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::createPlugin): + * WebCoreSupport/FullscreenVideoController.h: + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::populateSetting): + (WebKit::InspectorClient::storeSetting): + * webkit/webkitdownload.cpp: + (webkit_download_error): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_new_with_core_request): + * webkit/webkitnetworkresponse.cpp: + (webkit_network_response_new_with_core_response): + +2010-08-24 Xan Lopez <xlopez@igalia.com> + + Reviewed by Martin Robinson. + + Set a device to the event struct when building with GTK+ 3.x, it's + mandatory. + + * tests/testcopyandpaste.c: + (runPasteTestCallback): + +2010-08-24 Martin Robinson <mrobinson@igalia.com> + + Build fix for GTK+. + + * tests/testkeyevents.c: + (key_press_event_cb): + (key_release_event_cb): + +2010-08-24 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events + https://bugs.webkit.org/show_bug.cgi?id=44534 + + Fix an issue where a GdkEvent* is treated like a GdkEvent. + + * tests/testkeyevents.c: + (key_press_event_cb): + (key_release_event_cb): + +2010-08-24 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events + https://bugs.webkit.org/show_bug.cgi?id=44534 + + * tests/testcopyandpaste.c: + (runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow. + when setting it on the event. It is dereferenced by gdk_event_free(...). + * tests/testhittestresult.c: + (load_status_cb): Switch to using gdk_event_new. + +2010-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Do not initialize the GSettings object in webkit_init - the other + call sites are always called in the main thread so this is + unnecessary. + + * webkit/webkitprivate.cpp: + (webkit_init): + +2010-08-20 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Pavel Feldman. + + Web Inspector: Inspector tests were disabled for GTK. + https://bugs.webkit.org/show_bug.cgi?id=43977 + + Allow setting the inspector resources path via an environment variables + and add a method, inspectorFilesPath, to the WebKit InspectorClient that + encapsulates this logic. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): Use the new inspectorFilesPath method to + get the path to the resource. + (WebKit::InspectorClient::inspectorFilesPath): Added. + (WebKit::InspectorFrontendClient::localizedStringsURL): Use inspectorFilesPath method. + * WebCoreSupport/InspectorClientGtk.h: Add method and member variables for caching the result. + +2010-08-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Kenneth Rohde Christiansen. + + [Gtk] Enable view mode media feature layout test + https://bugs.webkit.org/show_bug.cgi?id=43278 + + Add the view-mode property, to control the WebCore page's viewMode. + + * docs/webkitgtk-sections.txt: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_property): + (webkit_web_view_set_property): + (webkit_web_view_class_init): + (webkit_web_view_set_view_mode): + (webkit_web_view_get_view_mode): + * webkit/webkitwebview.h: + +2010-08-19 Philippe Normand <pnormand@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GStreamer] GTK XOverlay support in GStreamerGWorld + https://bugs.webkit.org/show_bug.cgi?id=39474 + + New FullscreenVideoController object, private in the webview. It + is created when the user presses the fullscreen button of the + video controls. Video is displayed in fullscreen, controls are + displayed when the user moves the mouse and when the video is + paused. There's also basic keyboard shortcuts support: F/f to + leave fullscreen, space to toggle play/pause and up/down to + control volume. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::supportsFullscreenForNode): + (WebKit::ChromeClient::enterFullscreenForNode): + (WebKit::ChromeClient::exitFullscreenForNode): + * WebCoreSupport/ChromeClientGtk.h: + * WebCoreSupport/FullscreenVideoController.cpp: Added. + (hideHudCallback): + (onFullscreenGtkMotionNotifyEvent): + (onFullscreenGtkActiveNotification): + (onFullscreenGtkConfigureEvent): + (onFullscreenGtkDestroy): + (togglePlayPauseActivated): + (exitFullscreenActivated): + (progressBarUpdateCallback): + (timeScaleButtonPressed): + (timeScaleButtonReleased): + (timeScaleValueChanged): + (volumeValueChanged): + (playerVolumeChangedCallback): + (playerMuteChangedCallback): + (FullscreenVideoController::FullscreenVideoController): + (FullscreenVideoController::~FullscreenVideoController): + (FullscreenVideoController::setMediaElement): + (FullscreenVideoController::gtkConfigure): + (FullscreenVideoController::showHud): + (FullscreenVideoController::hideHud): + (onFullscreenGtkKeyPressEvent): + (FullscreenVideoController::enterFullscreen): + (FullscreenVideoController::updateHudPosition): + (FullscreenVideoController::exitOnUserRequest): + (FullscreenVideoController::exitFullscreen): + (FullscreenVideoController::canPlay): + (FullscreenVideoController::play): + (FullscreenVideoController::pause): + (FullscreenVideoController::playStateChanged): + (FullscreenVideoController::togglePlay): + (FullscreenVideoController::volume): + (FullscreenVideoController::muted): + (FullscreenVideoController::setVolume): + (FullscreenVideoController::volumeChanged): + (FullscreenVideoController::muteChanged): + (FullscreenVideoController::currentTime): + (FullscreenVideoController::setCurrentTime): + (FullscreenVideoController::duration): + (FullscreenVideoController::percentLoaded): + (FullscreenVideoController::beginSeek): + (FullscreenVideoController::doSeek): + (FullscreenVideoController::endSeek): + (timeToString): + (FullscreenVideoController::updateHudProgressBar): + (FullscreenVideoController::createHud): + * WebCoreSupport/FullscreenVideoController.h: Added. + (FullscreenVideoController::mediaElement): + * webkit/webkitprivate.cpp: + (webkit_web_view_enter_fullscreen): + (webkit_web_view_exit_fullscreen): + * webkit/webkitprivate.h: + +2010-08-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] WebBackForwardList's new_with_web_view should not be public + https://bugs.webkit.org/show_bug.cgi?id=43802 + + Deprecate the constructor. The introspection annotation has been + fixed in a previous commit. + + * webkit/webkitwebbackforwardlist.cpp: + +2010-08-17 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Yury Semikhatsky. + + Web Inspector: replace hand written InspectorBackendStub.js with generated one. + https://bugs.webkit.org/show_bug.cgi?id=43791 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-18 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r65595. + http://trac.webkit.org/changeset/65595 + https://bugs.webkit.org/show_bug.cgi?id=44161 + + qt build failed (Requested by loislo on #webkit). + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-17 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Yury Semikhatsky. + + Web Inspector: replace hand written InspectorBackendStub.js by generated one. + https://bugs.webkit.org/show_bug.cgi?id=43791 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-17 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix the builds when HAVE_GSETTINGS is defined. + + * webkit/webkitprivate.cpp: + (isSchemaAvailable): + (inspectorGSettings): + +2010-08-17 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + Reviewed by Darin Adler. + + Add NetworkingContext to avoid layer violations + https://bugs.webkit.org/show_bug.cgi?id=42292 + + Preparation: Just add the files to the build system. + + * WebCoreSupport/FrameNetworkingContextGtk.h: Added. + Placeholder with tentative code that might be changed when landing + the rest of it. + +2010-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + WebBackForwardList.get_{back|forward}_list_with_limit not introspectable + https://bugs.webkit.org/show_bug.cgi?id=43054 + + Annotate WebKitWebBackForwardList and the function that is used to fetch it from + the WebKitWebView. More will follow. + + * webkit/webkitwebbackforwardlist.cpp: Annotations, and small + improvements to the docs. + * webkit/webkitwebbackforwardlist.h: Couple empty lines missing. + * webkit/webkitwebview.cpp: + +2010-08-17 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Clean up WebCore/platform/graphics/gtk/ImageGtk.cpp + https://bugs.webkit.org/show_bug.cgi?id=44069 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): Switched to using the new WEBKITGTK_API_VERSION_STRING define. + * webkit/webkitprivate.cpp: + (inspectorGSettings): Ditto. + +2010-08-17 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r65500. + http://trac.webkit.org/changeset/65500 + https://bugs.webkit.org/show_bug.cgi?id=44108 + + Qt bots failed to compile. (Requested by loislo on #webkit). + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-17 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Yury Semikhatsky. + + Web Inspector: replace hand written InspectorBackendStub.js by generated one. + https://bugs.webkit.org/show_bug.cgi?id=43791 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] GSettings support adds annoying warnings on systems with older glib versions + https://bugs.webkit.org/show_bug.cgi?id=44056 + + Use #ifdef instead of #if for HAVE_GSETTINGS to avoid warnings + when it is not defined. + + * WebCoreSupport/InspectorClientGtk.cpp: + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitprivate.h: + +2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Really add a missing file. I wish I would remember running git add + on them after applying a patch =(. + + * org.webkitgtk.gschema.xml.in: Added. + +2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Use GSettings to save/restore Web Inspector settings + https://bugs.webkit.org/show_bug.cgi?id=43512 + + Use GSettings to save/restore settings used by the Web Inspector. + A few helper functions were added to have settings that use + boolean values be actual booleans, and also to conform with the + GSettings naming requirements for keys. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::toGSettingName): + (WebKit::truthStringFromVariant): + (WebKit::variantFromTruthString): + (WebKit::InspectorClient::populateSetting): + (WebKit::InspectorClient::storeSetting): + * org.webkit.gtk.gschema.xml: Added. + * webkit/webkitprivate.cpp: + (inspectorGSettings): + (webkit_init): + * webkit/webkitprivate.h: + +2010-08-11 Joone Hur <joone@kldp.org> + + Reviewed by Martin Robinson. + + [GTK] Last Hangul letter is typed again when a composition is finished with mouse press + https://bugs.webkit.org/show_bug.cgi?id=40518 + + When a mouse press fires during a IME composition, the current composition character + can be entered twice at the previous editing position and a new editing position. + Because the IME commit signal is emitted after the mouse press event. + This patch allows to prevent the commit signal during a composition when a mouse press fires. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::EditorClient::handleInputMethodKeydown): Allow to accept the next composition commit. + (WebKit::EditorClient::handleInputMethodMousePress): Added for handling IME when a mouse press fires. + (WebKit::EditorClient::EditorClient): Initialize m_preventNextCompositionCommit + * WebCoreSupport/EditorClientGtk.h: + (WebKit::EditorClient::preventNextCompositionCommit): Added for checking whether skipping a commit. + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): Call handleInputMethodMousePress() + +2010-08-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + Small improvement to the documentation of the geolocation-policy-decision-requested + signal, stating more clearly what is expected from the handler. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2010-08-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + [GTK] Geolocation policy decision object leaking + https://bugs.webkit.org/show_bug.cgi?id=43884 + + Use GRefPtr on the policy decision object to fix the leak. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::requestGeolocationPermissionForFrame): + +2010-08-10 Chris Marrin <cmarrin@apple.com> + + Reviewed by Oliver Hunt. + + Add suspendAnimations/resumeAnimation API to DRT + https://bugs.webkit.org/show_bug.cgi?id=43733 + + Gtk specific API. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_suspend_animations): + (webkit_web_frame_resume_animations): + +2010-08-10 Gavin Barraclough <barraclough@apple.com> + + Rubber stamped by Sam Weinig. + + Bug 43786 - Move AtomicStringHash from WebCore to WTF + Also remove deprecated string headers from WebCore/platform/text. + + * gdom/ConvertToGCharPrivate.h: + +2010-08-06 Gavin Barraclough <barraclough@apple.com> + + Rubber stamped by Sam Weinig + + Bug 43594 - Add string forwards to Forward.h + This allows us to remove forward declarations for these classes from + WebCore/WebKit (a step in moving these class from WebCore:: to WTF::). + + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-09 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [gtk] gtk_im_context_focus_in() should only be called when an input-able element has focus + https://bugs.webkit.org/show_bug.cgi?id=43602 + + Only call gtk_im_context_focus_in() when we focus a frame which is currently in + an editable node. + + * webkit/webkitwebview.cpp: + (webkit_web_view_focus_in_event): Conditionalize call to gtk_im_context_focus_in(). + +2010-08-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Use the new paths, and also fix the path for localizedStrings. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + (WebKit::InspectorFrontendClient::localizedStringsURL): + +2010-08-06 Jessie Berlin <jberlin@apple.com> + + Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build. + Unreviewed. + + * WebCoreSupport/InspectorClientGtk.h: + +2010-08-05 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Use correct path for Inspector data files in GTK+3.x builds + https://bugs.webkit.org/show_bug.cgi?id=43445 + + Use the right data path for inspector files when building with + GTK+ 3.x. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::openInspectorFrontend): + +2010-08-03 Daniel Bates <dbates@rim.com> + + Fix misspelled word 'teh' in the description of the XSS Auditor setting. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2010-08-03 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Fix DOM event dispatch + https://bugs.webkit.org/show_bug.cgi?id=40847 + + Test DOM event dispatch. + + * tests/testdomdomwindow.c: + (load_event_callback): + (test_dom_domview_signals): + (clicked_cb): + (load_status_callback): + (test_dom_domview_dispatch_event): + (main): + +2010-08-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Does not paint the node highlight used by the inspector + https://bugs.webkit.org/show_bug.cgi?id=43429 + + Implement highlighting the nodes when using the inspector. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::highlight): + (WebKit::InspectorClient::hideHighlight): + * webkit/webkitwebview.cpp: + (webkit_web_view_expose_event): + +2010-08-03 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update unit tests now that string parameters are 'const char*'. + + * tests/testdomdocument.c: + (test_dom_document_title): + (test_dom_document_get_elements_by_tag_name): + (test_dom_document_get_elements_by_class_name): + (test_dom_document_get_element_by_id): + * tests/testdomnode.c: + (test_dom_node_insertion): + +2010-08-02 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] DRT implement execCommand() + https://bugs.webkit.org/show_bug.cgi?id=35351 + + * webkit/webkitprivate.h: Add some private methods for the DRT which enable + LayoutTestController.execCommand and LayoutTestController.isCommandEnabled: + webkit_web_view_execute_core_command_by_name and webkit_web_view_is_command_enabled. + * webkit/webkitwebview.cpp: + (webkit_web_view_execute_core_command_by_name): added. + (webkit_web_view_is_command_enabled): Added. + +2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Darin Fisher. + + PopupMenu refactoring in preparation to WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=42592 + + As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu + instances, concrete classes that inherit from ChromeClient needed to be changed to + implement the new methods. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::selectItemWritingDirectionIsNatural): + (WebKit::ChromeClient::createPopupMenu): + (WebKit::ChromeClient::createSearchPopupMenu): + * WebCoreSupport/ChromeClientGtk.h: + +2010-08-02 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Create a frame-created signal + https://bugs.webkit.org/show_bug.cgi?id=43284 + + Add a frame-created signal, which will allow developers to track + the beginning of a frame lifecycle and attach signal handlers to + all new frames. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): Emit the frame-created signal. + * tests/testwebframe.c: Add a test which verifies that the correct number of + frame-created signals is fired when a page with iframes loads. + (createFrameSignalTestFrameCreatedCallback): Added. + (createFrameSignalTestTimeout): Added. + (test_webkit_web_frame_created_signal): Added. + (main): Add a reference to the new test. + * webkit/webkitprivate.h: De-normalize webkit_web_frame_init_with_web_view into + the one place that it is used, so that the frame-created signal may be fired there. + * webkit/webkitwebframe.cpp: Remove webkit_web_frame_init_with_web_view. + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): Add the frame-created signal declaration. + +2010-08-02 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Chris Fleizach. + + [GTK] Implement support for get_character_extents and get_range_extents + https://bugs.webkit.org/show_bug.cgi?id=25677 + + Added new unit tests to check get_character_extents and + get_range_extents functions for the ATK_TEXT interface + + Based on a previous patch by Joanmarie Diggs. + + * tests/testatk.c: + (test_webkit_atk_get_extents): + (main): + +2010-08-02 Jeremy Orlow <jorlow@chromium.org> + + Speculative revert of 64425 due to Chromium instability + https://bugs.webkit.org/show_bug.cgi?id=43347 + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + +2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Darin Fisher. + + PopupMenu refactoring in preparation to WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=42592 + + As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu + instances, concrete classes that inherit from ChromeClient needed to be changed to + implement the new methods. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::selectItemWritingDirectionIsNatural): + (WebKit::ChromeClient::createPopupMenu): + (WebKit::ChromeClient::createSearchPopupMenu): + * WebCoreSupport/ChromeClientGtk.h: + +2010-07-31 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r64422. + http://trac.webkit.org/changeset/64422 + https://bugs.webkit.org/show_bug.cgi?id=43304 + + Build fixes are needed for Snow Leopard and Windows. + (Requested by lca on #webkit). + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + +2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Darin Fisher. + + PopupMenu refactoring in preparation to WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=42592 + + As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu + instances, concrete classes that inherit from ChromeClient needed to be changed to + implement the new methods. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::selectItemWritingDirectionIsNatural): + (WebKit::ChromeClient::createPopupMenu): + (WebKit::ChromeClient::createSearchPopupMenu): + * WebCoreSupport/ChromeClientGtk.h: + +2010-07-30 Joseph Pecoraro <joepeck@webkit.org> + + Reviewed by David Kilzer. + + Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas) + https://bugs.webkit.org/show_bug.cgi?id=40627 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::reachedApplicationCacheOriginQuota): + * WebCoreSupport/ChromeClientGtk.h: +2010-07-26 Steve Block <steveblock@google.com> + + Reviewed by Jeremy Orlow. + + Page clients should be passed to Page constructor via structure of pointers + https://bugs.webkit.org/show_bug.cgi?id=42834 + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2010-07-16 Zhe Su <suzhe@chromium.org> + + Reviewed by Darin Adler. + + REGRESSION(r61484): Broke focus behaviour on Qt and probably other platforms + https://bugs.webkit.org/show_bug.cgi?id=42253 + + Dummy implementation of EditorClient::willSetInputMethodState. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::willSetInputMethodState): + * WebCoreSupport/EditorClientGtk.h: + +2010-07-16 Nate Chapin <japhet@chromium.org> + + Reviewed by Darin Fisher. + + Uncomment an assert that broke due to r63100. + + https://bugs.webkit.org/show_bug.cgi?id=42298 + + * tests/testwebview.c: + +2010-07-14 Sam Weinig <sam@webkit.org> + + Reviewed by Darin Adler. + + Patch for https://bugs.webkit.org/show_bug.cgi?id=42232 + Make changing Cursors work in WebKit2. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::setCursor): + * WebCoreSupport/ChromeClientGtk.h: + Change prototype to match new one. + +2010-07-12 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] r63100 broke the testwebview test + https://bugs.webkit.org/show_bug.cgi?id=42114 + + * tests/testwebview.c: Disable a failing assertion in test_webkit_web_view_adjustments + until we can get to the bottom of the failure. + +2010-07-12 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.3.3 + + * NEWS: + +2010-07-12 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix compilation with sealed GTK+. + + * webkit/webkitwebview.cpp: + (webkit_web_view_drag_motion): + (webkit_web_view_drag_data_received): + (webkit_web_view_drag_drop): + +2010-07-11 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] WebKitWebView should support drops + https://bugs.webkit.org/show_bug.cgi?id=39843 + + Add support for dropping content onto GTK+ WebViews. + + * webkit/webkitprivate.h: + Add a DroppingContext struct to keep track of drop data while the drop is + in progress. Have WebKitWebView keep a map of GdkDragContexts to DroppingContexts. + * webkit/webkitwebview.cpp: Add necessary includes and globalPointForClientPoint helper. + (webkit_web_view_popup_menu_handler): Use globalPointForClientPoint helper. + (webkit_web_view_dispose): Properly clean up droppingContexts member. + (webkit_web_view_finalize): Delete droppingContext member. + (globalPointForClientPoint): Added. + (doDragLeaveLater): Added. + (webkit_web_view_drag_leave): Added. + (webkit_web_view_drag_motion): Added. + (webkit_web_view_drag_data_received): Added. + (webkit_web_view_drag_drop): Added. + (webkit_web_view_class_init): Connect new drop signal handlers to the widget definition. + (webkit_web_view_init): Set up the widget as a drop destination and initialize droppingContexts. + +2010-07-07 Sam Weinig <sam@webkit.org> + + Reviewed by Anders Carlsson. + + Patch for https://bugs.webkit.org/show_bug.cgi?id=41772 + Add basic piping for BackForwardControllerClient. + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2010-06-19 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Yury Semikhatsky. + + WebInspector: js function name was fixed. + dispatchMessageToFrontend -> dispatchMessageFromBackend. + https://bugs.webkit.org/show_bug.cgi?id=40675 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::sendMessageToFrontend): + +2010-06-23 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Separate DerivedSources per-project + https://bugs.webkit.org/show_bug.cgi?id=41109 + + Separate WebKitGTK+ DerivedSources into per-project subdirectories to prepare + for properly building WebKit2. + + * webkitmarshal.list: Touch this file to force a rebuild of the marshaling code. + +2010-07-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Stop using GdkRegion in 3.x mode + https://bugs.webkit.org/show_bug.cgi?id=41463 + + Make us compile without using GdkRegion, since it's gone from GTK+ + 3.x. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::scroll): + * webkit/webkitwebview.cpp: + (webkit_web_view_expose_event): + +2010-07-01 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Convert WebKitWebView's private draggingDataObjects member to a pointer + https://bugs.webkit.org/show_bug.cgi?id=40333 + + Convert draggingDataObjects to a pointer. The constructor and destructor of the + HashMap should be called explicitly. GObject memory allocation does not do this. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + (webkit_web_view_drag_end): + (webkit_web_view_drag_data_get): + (webkit_web_view_init): + +2010-06-30 Martin Robinson <mrobinson@igalia.com> + + Unreviewed, rolling out r62226. + http://trac.webkit.org/changeset/62226 + https://bugs.webkit.org/show_bug.cgi?id=40333 + + This change caused 13 new crashers. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + (webkit_web_view_drag_end): + (webkit_web_view_drag_data_get): + (webkit_web_view_init): + +2010-06-30 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Convert WebKitWebView's private draggingDataObjects member to a pointer + https://bugs.webkit.org/show_bug.cgi?id=40333 + + Convert draggingDataObjects to a pointer. The constructor and destructor of the + HashMap should be called explicitly. GObject memory allocation does not do this. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + (webkit_web_view_drag_end): + (webkit_web_view_drag_data_get): + (webkit_web_view_init): + +2010-06-30 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Unit test for DOM insertion methods + https://bugs.webkit.org/show_bug.cgi?id=40495 + + Add unit test for webkit_dom_node_remove_child. + + * tests/testdomnode.c: + (test_dom_node_insertion): + +2010-06-30 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Unit test for DOM insertion methods + https://bugs.webkit.org/show_bug.cgi?id=40495 + + Add unit tests for node insertion and replacement methods. + + * tests/testdomnode.c: + (test_dom_node_insertion): + (main): + +2010-06-30 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Random failure on 'testdownload' unit test + https://bugs.webkit.org/show_bug.cgi?id=38256 + + Make sure the set_filename function is called after handling the + 'download-requested' signal for the asynchronous test. This change + is needed because it could happen, with the current code, that the + set_filename () function got called too early in the mainloop, + therefore screwing the tests because the 'theDownload' global + variable wouldn't be properly set yet. + + With this modification we ensure the set_filename() function gets + called always after handling the download-requested signal, + therefore avoiding potentialproblems. + + * tests/testdownload.c: + (set_filename): + (handle_download_requested_cb): + (download_requested_cb): + (download_requested_asynch_cb): + (test_webkit_download_perform): + +2010-06-30 José Millán Soto <jmillan@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Text attributes not exposed + https://bugs.webkit.org/show_bug.cgi?id=25528 + + Added new tests for accessible text attributes + + * tests/testatk.c: + (compAtkAttribute): + (compAtkAttributeName): + (atkAttributeSetAttributeHasValue): + (atkAttributeSetAreEqual): + (testWebkitAtkTextAttributes): + (main): + +2010-06-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.3.2. + + * NEWS: + +2010-06-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Does not compile with -DGSEAL_ENABLE + https://bugs.webkit.org/show_bug.cgi?id=37851 + + Fix build with GSEAL enabled. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + +2010-06-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Add support for GTK+3 + https://bugs.webkit.org/show_bug.cgi?id=41253 + + Adapt build system to 3.x support, allow the JSCore gir and webkit + pc files to be configurable at build time for different API + versions. + + * JSCore-1.0.gir: Removed. + * JSCore.gir.in: Added. + * docs/GNUmakefile.am: + * webkit.pc.in: + +2010-06-25 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Implement atk_table_get_column_header + https://bugs.webkit.org/show_bug.cgi?id=30896 + + Replace g_timeout_add() with g_idle_add(). + + * tests/testatk.c: + (test_webkit_atk_get_text_at_offset_forms): + (test_webkit_atk_get_text_at_offset): + (test_webkit_atk_get_text_at_offset_newlines): + (test_webkit_atk_get_text_at_offset_textarea): + (test_webkit_atk_get_text_at_offset_text_input): + (testWebkitAtkGetTextInParagraphAndBodySimple): + (testWebkitAtkGetTextInParagraphAndBodyModerate): + (testWebkitAtkGetTextInTable): + (testWebkitAtkGetHeadersInTable): + +2010-06-25 Mario Sanchez Prada <msanchez@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Implement atk_table_get_column_header + https://bugs.webkit.org/show_bug.cgi?id=30896 + + Added new test to check whether the implementation of + get_column_headers() and get_row_headers() works ok. + + * tests/testatk.c: + (testWebkitAtkGetHeadersInTable): + (main): + +2010-06-25 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Pasteboard code does not take into account the nil character when getting and setting markup/netscape-url data + https://bugs.webkit.org/show_bug.cgi?id=41221 + + Add a test for this issue which simulates a paste keyboard event into an editable + body. The pasteboard should contain a markup portion containing a null terminator. + + * tests/testcopyandpaste.c: + (test_info_new): + (test_info_destroy): + (load_status_cb): + (runPasteTestCallback): + (window_object_cleared_callback): + (pasting_test_get_data_callback): + (pasting_test_clear_data_callback): + (test_pasting_markup): + (main): + +2010-06-24 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Cannot change the selection via the keyboard + https://bugs.webkit.org/show_bug.cgi?id=41162 + + Fix issue where the selection could not be extended via the keyboard by + adjusting the logic guarding against inserting text in non-editable nodes. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): + Allow editor commands that do not insert text in non-editable nodes. This + fixes keyboard selection extension in non-editable nodes. Move the existing + check to after the execution of any editor commands. + +2010-06-15 Dumitru Daniliuc <dumi@chromium.org> + + Reviewed by Adam Barth. + + Move isAvailable()/setIsAvailable() from Database/DatabaseSync to AbstractDatabase. + https://bugs.webkit.org/show_bug.cgi?id=39041 + + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + (webkit_get_cache_model): + +2010-06-16 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Remove the abuse of GDK_CURRENT_TIME in the DRT + https://bugs.webkit.org/show_bug.cgi?id=40600 + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): Reset the click count after a drag starts. + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): Reset the click count after a load is committed. + * webkit/webkitprivate.h: Move static click counting variables to be per-view. + * webkit/webkitwebview.cpp: + (getEventTime): Added. + (webkit_web_view_button_press_event): If the event time is zero, use the current time. + (webkit_web_view_finalize): Clean up click counting member. + (webkit_web_view_init): Initialize click counting member. + +2010-06-15 Xan Lopez <xlopez@igalia.com> + + Fix compilation with older GTK+. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::pageRect): + +2010-06-15 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Does not compile with -DGSEAL_ENABLE + https://bugs.webkit.org/show_bug.cgi?id=37851 + + Fix compilation with GSEAL_ENABLE. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::pageRect): + (WebKit::ChromeClient::contentsSizeChanged): + * tests/testdomnode.c: + (test_dom_node_insertion): + * webkit/webkitwebview.cpp: + (webkit_web_view_realize): + (webkit_web_view_script_dialog): + (webkit_web_view_drag_end): + (webkit_web_view_init): + +2010-06-14 Ilya Tikhonovsky <loislo@chromium.org> + + Unreviewed build fix. + + This is a fix for flaky inspector tests at gtk-debug bots. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + +2010-06-14 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Pavel Feldman. + + WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc + data from inspected page to WebInspector as JSON string via http. The native + serialization to JSON string is supported by InspectorValue's classes. This patch + has the implementation of sendMessageToFrontend function. WebKit version of it still + uses ScriptFunctionCall and will be switched to another transport a little bit later. + https://bugs.webkit.org/show_bug.cgi?id=40134 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::releaseFrontendPage): + (WebKit::InspectorClient::sendMessageToFrontend): + * WebCoreSupport/InspectorClientGtk.h: + +2010-06-10 Eric Seidel <eric@webkit.org> + + Reviewed by Adam Barth. + + Reduce FrameView.h includes to speed up build times + https://bugs.webkit.org/show_bug.cgi?id=40408 + + * webkit/webkitwebinspector.cpp: + - Include RenderLayer.h + +2010-06-09 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r60889. + http://trac.webkit.org/changeset/60889 + https://bugs.webkit.org/show_bug.cgi?id=40365 + + gtk bot has some kind of memory corruption (Requested by + loislo on #webkit). + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::InspectorClient): + (WebKit::InspectorClient::openInspectorFrontend): + (WebKit::InspectorFrontendClient::InspectorFrontendClient): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + * WebCoreSupport/InspectorClientGtk.h: + +2010-06-07 Ilya Tikhonovsky <loislo@chromium.org> + + Reviewed by Pavel Feldman. + + WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc + data from inspected page to WebInspector as JSON string via http. The native + serialization to JSON string is supported by InspectorValue's classes. This patch + has the implementation of sendMessageToFrontend function. WebKit version of it still + uses ScriptFunctionCall and will be switched to another transport a little bit later. + https://bugs.webkit.org/show_bug.cgi?id=40134 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::releaseFrontendPage): + (WebKit::InspectorClient::sendMessageToFrontend): + * WebCoreSupport/InspectorClientGtk.h: + +2010-06-08 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Unit testing for WebKitDOMNode hierarchy walk + https://bugs.webkit.org/show_bug.cgi?id=40171 + + Add some DOM node unit testing. + + * tests/testdomnode.c: Added. + (finish_loading): + (dom_node_fixture_setup): + (dom_node_fixture_teardown): + (test_dom_node_hierarchy_navigation): + (main): + +2010-06-08 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Ojan Vafai and Darin Adler. + + Refactor platform dependent editing behavior code out of Settings + https://bugs.webkit.org/show_bug.cgi?id=39854 + + EditingBehavior enum was renamed to EditingBehaviorTypes and moved out from Settings.h to + EditingBehaviorTypes.h . Call sites in WebKit/ adjusted accordingly. + + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-06-08 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Add inner-node property to WebKitHitTestResult + https://bugs.webkit.org/show_bug.cgi?id=40131 + + Add a 'inner-node' property to WebKitHitTestResult, carrying the + DOM node where the hit test happened. + + * tests/testhittestresult.c: + (load_status_cb): + * webkit/webkithittestresult.cpp: + (webkit_hit_test_result_get_property): + (webkit_hit_test_result_set_property): + (webkit_hit_test_result_class_init): + * webkit/webkitprivate.cpp: + (WebKit::kit): + +2010-06-07 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] gtk_widget_get_window should replace widget->window + https://bugs.webkit.org/show_bug.cgi?id=40180 + + Replace uses of widget->window with gtk_widget_get_window. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::invalidateContentsAndWindow): Replace widget->window uses. + (WebKit::ChromeClient::scroll): Ditto. + (WebKit::widgetScreenPosition): Ditto. + * WebCoreSupport/DragClientGtk.cpp: Move gtk_widget_get_window define to GtkVersioning.h. + * webkit/webkitwebview.cpp: + (webkit_web_view_popup_menu_handler): Replace widget->window uses. + (webkit_web_view_button_press_event): Ditto. + +2010-06-04 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Drag gesture can take mouse grab indefinitely + https://bugs.webkit.org/show_bug.cgi?id=32840 + + Initiate drag events with the current GTK+ event instead of synthesizing + an event. Something about synthesized events is causing a drag freeze in + certain situations. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): Start the drag with the current GTK+ event. + +2010-06-03 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r60632. + http://trac.webkit.org/changeset/60632 + https://bugs.webkit.org/show_bug.cgi?id=40143 + + This change broke the 64-bit bots. (Requested by mrobinson on + #webkit). + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::DragClient): + (WebKit::DragClient::startDrag): + * WebCoreSupport/DragClientGtk.h: + +2010-06-03 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Drag gesture can take mouse grab indefinitely + https://bugs.webkit.org/show_bug.cgi?id=32840 + + Start GTK+ drags with the previous mouse button down event instead of + synthesizing the event. The synthesized event was not completely valid + and froze some drags indefinitely. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::buttonPressEvent): Added. + (WebKit::DragClient::DragClient): + Connect to the 'button-press-event' signal of the WebView. + (WebKit::DragClient::startDrag): + Instead of synthesizing a button press event use the last real one. + * WebCoreSupport/DragClientGtk.h: + (WebKit::DragClient::setLastButtonPressEvent): Added. + +2010-06-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Memory Leak: The main resource of page is not free. + https://bugs.webkit.org/show_bug.cgi?id=39973 + + Fix refcount tracking of the main resource. Patch by Genhua Liu. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFinishLoading): + +2010-06-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix-up for previous leak fix, the identifier was not always duped. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_add_resource): + +2010-06-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Plug a small leak. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest): + +2010-06-01 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Double clicks cause three button press events + https://bugs.webkit.org/show_bug.cgi?id=38853 + + Handle click counting much like the Windows port. GTK+ only + counts triple-clicks natively, so use GTK+ double-click settings + to count clicks with even larger click counts. Also filter the + extra GDK_BUTTON_PRESS before GDK_{2,3}BUTTON_PRESS events using + gdk_event_peek(). + + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): Count clicks manually. Filter extra events. + +2010-05-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Missing links to documentation of general functions + https://bugs.webkit.org/show_bug.cgi?id=39964 + + Add global functions section, and move those functions that are + currently in WebKitWebView's source file to the bottom, along with + the description. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_dom_document): + (webkit_get_default_session): + +2010-05-31 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Text copied from a WebView cannot be pasted into gnome-terminal + https://bugs.webkit.org/show_bug.cgi?id=39827 + + Add a test to prevent regressions for this issue. + + * tests/testcopyandpaste.c: Added. + (test_info_new): + (test_info_destroy): + (copy_and_paste_fixture_setup): + (copy_and_paste_fixture_teardown): + (load_status_cb): + (map_event_cb): + (test_copy_and_paste): + (main): + +2010-05-27 Gustavo Noronha Silva <gns@gnome.org> + + Update documentation control files, and fix Since tags for 1.3.1. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebview.cpp: + +2010-05-27 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.3.1 release. + + * NEWS: + +2010-05-27 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Dragging onto the desktop causes a critical GLib warning + https://bugs.webkit.org/show_bug.cgi?id=39718 + + Only increment the window reference count if it is not null during drag-end + signal processing. + + * webkit/webkitwebview.cpp: + (webkit_web_view_drag_end): Guard against null window values. + +2010-05-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Add support for DOM events in the GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=38844 + + Test DOMWindow signals. + + * tests/testdomdomwindow.c: Added. + (finish_loading): + (dom_domview_fixture_setup): + (dom_domview_fixture_teardown): + (loadedCallback): + (clickedCallback): + (map_event_cb): + (load_event_callback): + (test_dom_domview_signals): + (main): + +2010-05-24 Darin Adler <darin@apple.com> + + Reviewed by Eric Seidel. + + Move view-related functions from Frame to FrameView + https://bugs.webkit.org/show_bug.cgi?id=39366 + + * webkit/webkitwebview.cpp: + (webkit_web_view_set_editable): Remove call to empty function + removeEditngStyleFromBodyElement. + (webkit_web_view_get_zoom_level): Call functions on FrameView. + (webkit_web_view_apply_zoom_level): Ditto. + +2010-05-22 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] webkit_web_view_drag_end should call EventHandler::dragSourceEndedAt + https://bugs.webkit.org/show_bug.cgi?id=39465 + + Properly call EventHandler::dragSourceEndedAt so that dragEnd events are processed in the DOM. + dragSourceEndedAt is responsible for calling the dragEnd DOM event as well as cleaning up assets + (such as the Clipboard) associated with the drag source. + + * webkit/webkitwebview.cpp: + (webkit_web_view_drag_end): Remember to call dragSourceEndedAt here. + +2010-05-22 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] WebKit/gtk/WebCoreSupport/DragClientGtk::startDrag should use the Clipboard::sourceOperation + https://bugs.webkit.org/show_bug.cgi?id=39459 + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): + Use Clipboard::sourceOperation instead of trying to figure out the GdkDragAction + manually. The DOM may have changed the appropriate list of actions anyhow. + +2010-05-21 Steve Block <steveblock@google.com> + + Reviewed by Jeremy Orlow. + + Add DeviceOrientation and DeviceOrientationClient + https://bugs.webkit.org/show_bug.cgi?id=39479 + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2010-05-19 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r59240. + http://trac.webkit.org/changeset/59240 + https://bugs.webkit.org/show_bug.cgi?id=39377 + + "Might cause crashes in GTK+ bots" (Requested by xan_ on + #webkit). + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::inputMethodsMenuItem): + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::setInputMethodState): + (WebKit::EditorClient::respondToChangedSelection): + (WebKit::EditorClient::handleInputMethodKeydown): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (destroy_menu_cb): + (webkit_web_view_forward_context_menu_event): + (webkit_web_view_key_release_event): + (webkit_web_view_button_release_event): + (webkit_web_view_focus_in_event): + (webkit_web_view_focus_out_event): + (webkit_web_view_realize): + (webkit_web_view_set_scroll_adjustments): + (webkit_web_view_dispose): + (webkit_web_view_finalize): + (webViewGetDPI): + (webkit_web_view_screen_changed): + (webkit_web_view_query_tooltip): + (webkit_web_view_get_im_context): + (webkit_web_view_update_settings): + (webkit_web_view_init): + (webkit_web_view_set_settings): + (webkit_web_view_get_settings): + (webkit_web_view_get_inspector): + (webkit_web_view_set_window_features): + (webkit_web_view_get_window_features): + (webkit_web_view_get_back_forward_list): + (webkit_web_view_zoom_in): + (webkit_web_view_zoom_out): + (webkit_web_view_get_encoding): + (webkit_web_view_get_custom_encoding): + (webkit_web_view_add_resource): + (webkit_web_view_get_resource): + (webkit_web_view_get_main_resource): + (webkit_web_view_clear_resources): + (webkit_web_view_get_subresources): + (webkit_web_view_set_tooltip_text): + (webkit_web_view_get_icon_uri): + +2010-05-18 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] DragClientGtk::startDrag leaks GdkEvents + https://bugs.webkit.org/show_bug.cgi?id=39322 + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::startDrag): Properly clean up allocated GdkEvent. + +2010-05-12 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Use GOwnPtr for code that needs it + https://bugs.webkit.org/show_bug.cgi?id=21594 + + Convert many uses of raw pointers to GRefPtr and GOwnPtr in WebKitWebView. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::inputMethodsMenuItem): + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::setInputMethodState): + (WebKit::EditorClient::respondToChangedSelection): + (WebKit::EditorClient::handleInputMethodKeydown): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (destroy_menu_cb): + (webkit_web_view_forward_context_menu_event): + (webkit_web_view_key_release_event): + (webkit_web_view_button_release_event): + (webkit_web_view_focus_in_event): + (webkit_web_view_focus_out_event): + (webkit_web_view_realize): + (webkit_web_view_set_scroll_adjustments): + (webkit_web_view_dispose): + (webkit_web_view_finalize): + (webViewGetDPI): + (webkit_web_view_screen_changed): + (webkit_web_view_query_tooltip): + (webkit_web_view_get_im_context): + (webkit_web_view_update_settings): + (webkit_web_view_init): + (webkit_web_view_set_settings): + (webkit_web_view_get_settings): + (webkit_web_view_get_inspector): + (webkit_web_view_set_window_features): + (webkit_web_view_get_window_features): + (webkit_web_view_get_back_forward_list): + (webkit_web_view_zoom_in): + (webkit_web_view_zoom_out): + (webkit_web_view_get_encoding): + (webkit_web_view_get_custom_encoding): + (webkit_web_view_add_resource): + (webkit_web_view_get_resource): + (webkit_web_view_get_main_resource): + (webkit_web_view_clear_resources): + (webkit_web_view_get_subresources): + (webkit_web_view_set_tooltip_text): + (webkit_web_view_get_icon_uri): + +2010-05-11 Martin Robinson <mrobinson@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Doesn't support gtk-key-themes + https://bugs.webkit.org/show_bug.cgi?id=28257 + + Add support for GTK+ key themes. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::backspaceCallback): Added. + (WebKit::cutClipboardCallback): Added. + (WebKit::copyClipboardCallback): Added. + (WebKit::pasteClipboardCallback): Added. + (WebKit::selectAllCallback): Added. + (WebKit::deleteFromCursorCallback): Added. + (WebKit::moveCursorCallback): Added. + (WebKit::EditorClient::generateEditorCommands): Added. + (WebKit::EditorClient::executePendingEditorCommands): Added. + (WebKit::EditorClient::handleKeyboardEvent): Derive editor commands both from internal text widget and a list of fallbacks. + (WebKit::EditorClient::EditorClient): Add m_nativeWidget initializer. + * WebCoreSupport/EditorClientGtk.h: + (WebKit::EditorClient::addPendingEditorCommand): Add m_nativeWidget member. + +2010-05-06 Martin Robinson <mrobinson@webkit.org> + + Reviewed by Xan Lopez. + + Remove use of GOwnPtr to hold GObject types. + https://bugs.webkit.org/show_bug.cgi?id=38669 + + Change use of GOwnPtr to GRefPtr to types which are natively reference-counted. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): Change GOwnPtr to GRefPtr in some places. + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): Ditto. + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_new_with_core_request): Ditto. + * webkit/webkitnetworkresponse.cpp: + (webkit_network_response_new_with_core_response): Ditto. + * webkit/webkitprivate.cpp: Remove GOwnPtr reference counting template specialization. + * webkit/webkitprivate.h: Ditto. + +2010-05-06 Martin Robinson <mrobinson@webkit.org> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Enable DOM clipboard and drag-and-drop access + https://bugs.webkit.org/show_bug.cgi?id=30623 + + Convert dragging portion of drag-and-drop to use DataObjectGtk. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::willPerformDragDestinationAction): Remove the notImplemented. It is implemented, it's just a no-op. + (WebKit::DragClient::startDrag): Start the drag context via the ClipboardGtk and PasteboardHelper now. + * WebCoreSupport/DragClientGtk.h: Small style fix. + * webkit/webkitprivate.h: Add a HashMap of contexts and DataObjects here to to represent all current drag operations. + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): Clear all data objects during disposal. + (webkit_web_view_drag_end): When a drag is over, just remove it from the map. + (webkit_web_view_drag_data_get): To get the drag data, just grab it from the DataObject. + +2010-05-03 Abhishek Arya <inferno@chromium.org> + + Reviewed by Adam Barth. + + Add support for controlling clipboard access from javascript. + Clipboard access from javascript is disabled by default. + https://bugs.webkit.org/show_bug.cgi?id=27751 + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-05-03 Jens Alfke <snej@chromium.org> + + Reviewed by Darin Fisher. + + [chromium] Add "willSendSubmitEvent" hook to WebFrameClient and FrameLoaderClient + https://bugs.webkit.org/show_bug.cgi?id=38397 + + No tests (functionality is exposed only through native WebKit API.) + + * WebCoreSupport/FrameLoaderClientGtk.h: + (WebKit::FrameLoaderClient::dispatchWillSendSubmitEvent): + +2010-05-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Oliver Hunt. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Test webkit_dom_document_get_links. + + * tests/testdomdocument.c: + (test_dom_document_get_links): + (main): + +2010-04-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Test webkit_dom_document_get_element_by_id; + + * tests/testdomdocument.c: + (test_dom_document_get_element_by_id): + (main): + +2010-04-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Test webkit_dom_document_get_elements_by_class_name. + + * tests/testdomdocument.c: + (test_dom_document_get_elements_by_class_name): + (main): + +2010-04-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Test webkit_dom_document_get_elements_by_tag_name. + + * tests/testdomdocument.c: + (test_dom_document_get_elements_by_tag_name): + (main): + +2010-04-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Move WebKitDOMDocument unit tests to their own file. + + * tests/testdomdocument.c: Added. + (finish_loading): + (dom_document_fixture_setup): + (dom_document_fixture_teardown): + (test_dom_document_title): + (main): + * tests/testwebview.c: + +2010-04-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Include <webkit/webkitdom.h> in the main webkit.h header. + + * webkit/webkit.h: + +2010-04-25 Sam Weinig <sam@webkit.org> + + Reviewed by Maciej Stachowiak. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=38097 + Disentangle initializing the main thread from initializing threading + + * webkit/webkitprivate.cpp: + (webkit_init): Add call to initializeMainThread. + +2010-04-22 Dave Moore <davemoore@chromium.org> + + Reviewed by Dimitri Glazkov. + + Added notification when the favicons for a page are changed + from a script. + The Document object will notify the frame loader, which will + notify the client. Implementations of FrameLoaderClient will + have to add one method; dispatchDidChangeIcons(). + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidChangeIcons): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-04-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] GObject DOM bindings + https://bugs.webkit.org/show_bug.cgi?id=33590 + + Add webkit_web_view_get_document to retrieve the WebKitDOMDocument + from a WebKitWebView, and a very simple test for it. + + * tests/testwebview.c: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_document): + * webkit/webkitwebview.h: + +2010-04-22 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Evaluate and create tests for all the AtkRole's implemented by + WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=34449 + + Expand testatkroles to test ATK_ROLE_COMBO_BOX. + + * tests/testatkroles.c: + (test_webkit_atk_get_role_combobox): + (main): + +2010-04-22 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Evaluate and create tests for all the AtkRole's implemented by + WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=34449 + + Expand testatkroles to test ATK_ROLE_SEPARATOR. + + * tests/testatkroles.c: + (test_webkit_atk_get_role_separator): + (main): + +2010-04-22 Adam Barth <abarth@webkit.org> + + Unreviewed, rolling out r58069. + http://trac.webkit.org/changeset/58069 + https://bugs.webkit.org/show_bug.cgi?id=27751 + + Broke compile on Windows. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-04-22 Abhishek Arya <inferno@chromium.org> + + Reviewed by Adam Barth. + + Add support for controlling clipboard access from javascript. + Clipboard access from javascript is disabled by default. + https://bugs.webkit.org/show_bug.cgi?id=27751 + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-04-21 Jakub Wieczorek <jwieczorek@webkit.org> + + Reviewed by Darin Adler. + + List item markers are not always updated after changes in the DOM. + https://bugs.webkit.org/show_bug.cgi?id=37060 + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_marker_text_for_list_item): Add a private API to get the marker text for a list item. + +2010-04-21 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Evaluate and create tests for all the AtkRole's implemented by + WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=34449 + + Expand testatkroles to test ATK_ROLE_FORM. + + * tests/testatkroles.c: + (test_webkit_atk_get_role_form): + (main): + +2010-04-20 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Factor DocumentWriter out of FrameLoader + https://bugs.webkit.org/show_bug.cgi?id=37175 + + Update these callsites because the method moved to DocumentWriter. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::finishedLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + +2010-04-20 Kent Tamura <tkent@chromium.org> + + Reviewed by Darin Adler. + + Change a parameter type of chooseIconForFiles() + https://bugs.webkit.org/show_bug.cgi?id=37504 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::chooseIconForFiles): + * WebCoreSupport/ChromeClientGtk.h: + +2010-04-20 Martin Robinson <mrobinson@webkit.org> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Enable DOM clipboard and drag-and-drop access + https://bugs.webkit.org/show_bug.cgi?id=30623 + + Move most of the PasteboardHelper logic into WebCore. This helps + prepare for WebKit2 and leads to a clearer separation of concerns + between the WebKit and WebCore layers. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::collapseSelection): Converted this logic to a GClosure callback. + (WebKit::EditorClient::respondToChangedSelection): Collapse selection via GClosure now. + * WebCoreSupport/PasteboardHelperGtk.cpp: Moved most of the code to WebCore. + (WebKit::PasteboardHelperGtk::PasteboardHelperGtk): This constructor just initializes the target list. + (WebKit::PasteboardHelperGtk::~PasteboardHelperGtk): The destructor no longer needs to free the target list. + (WebKit::PasteboardHelperGtk::getIdForTargetType): Added, virtual method for getting target ids. + (WebKit::PasteboardHelperGtk::usePrimarySelectionClipboard): Added, virtual method for querying current clipboard. + * WebCoreSupport/PasteboardHelperGtk.h: Update method list to reflect reduced functionality. + +2010-04-19 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Evaluate and create tests for all the AtkRole's implemented by + WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=34449 + + Expand testatkroles to test ATK form roles. + + * tests/testatkroles.c: + (test_webkit_atk_get_role_check_box): + (test_webkit_atk_get_role_entry): + (test_webkit_atk_get_role_label): + (test_webkit_atk_get_role_listbox): + (test_webkit_atk_get_role_password_text): + (test_webkit_atk_get_role_push_button): + (test_webkit_atk_get_role_radio_button): + (main): + +2010-04-19 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Evaluate and create tests for all the AtkRole's implemented by + WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=34449 + + Add testatkroles to test ATK non form roles. + + * tests/testatkroles.c: Added. + (finish_loading): + (atk_roles_fixture_setup): + (atk_roles_fixture_teardown): + (get_child_and_test_role): + (test_webkit_atk_get_role_document_frame): + (test_webkit_atk_get_role_heading): + (test_webkit_atk_get_role_image): + (test_webkit_atk_get_role_link): + (test_webkit_atk_get_role_list_and_item): + (test_webkit_atk_get_role_paragraph): + (test_webkit_atk_get_role_section): + (test_webkit_atk_get_role_table): + (main): + +2010-04-17 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + We have to initialize the timer attribute after destroying it, not + doing it was causing crashes in some situations. + + * webkit/webkitdownload.cpp: + (webkit_download_finalize): + +2010-04-13 Timothy Hatcher <timothy@apple.com> + + Rename SecurityOrigin::whiteListAccessFromOrigin to addOriginAccessWhitelistEntry. + And SecurityOrigin::resetOriginAccessWhiteLists to resetOriginAccessWhitelists. + + SecurityOrigin needs a way to remove individual OriginAccessEntries + https://bugs.webkit.org/show_bug.cgi?id=37449 + + Reviewed by Dave Hyatt. + + * webkit/webkitprivate.cpp: + (webkit_white_list_access_from_origin): + (webkit_reset_origin_access_white_lists): + +2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r57468. + http://trac.webkit.org/changeset/57468 + https://bugs.webkit.org/show_bug.cgi?id=37433 + + Broke the world... Must have applied the patch wrong + (Requested by abarth on #webkit). + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::finishedLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + +2010-04-11 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Factor DocumentWriter out of FrameLoader + https://bugs.webkit.org/show_bug.cgi?id=37175 + + Update these callsites because the method moved to DocumentWriter. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::finishedLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + +2010-04-07 Andrey Kosyakov <caseq@chromium.org> + + Reviewed by Yury Semikhatsky. + + Removed redundant FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest() + https://bugs.webkit.org/show_bug.cgi?id=36949 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-04-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + [GTK] webkit_get_default_session() should make sure webkit_init() is called + https://bugs.webkit.org/show_bug.cgi?id=36754 + + Make sure global functions that do not require a WebKitWebView to + be created call webkit_init() before doing their job. Also add an + API test to check for that. + + * tests/testglobals.c: Added. + (test_globals_default_session): + (main): + * webkit/webkitwebview.cpp: + (webkit_get_default_session): + (webkit_set_cache_model): + (webkit_get_cache_model): + +2010-03-31 Marcus Bulach <bulach@chromium.org> + + Reviewed by Jeremy Orlow. + + Adds Geolocation param for cancelGeolocationPermissionRequestForFrame. + https://bugs.webkit.org/show_bug.cgi?id=35031 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::cancelGeolocationPermissionRequestForFrame): + * WebCoreSupport/ChromeClientGtk.h: + +2010-03-30 Gavin Barraclough <barraclough@apple.com> + + Rubber stamped by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=36866 + Move CString to WTF + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/EditorClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/InspectorClientGtk.cpp: + * gdom/ConvertToGCharPrivate.h: + * webkit/webkitdownload.cpp: + * webkit/webkithittestresult.cpp: + * webkit/webkitnetworkrequest.cpp: + * webkit/webkitprivate.h: + * webkit/webkitsecurityorigin.cpp: + * webkit/webkitwebdatabase.cpp: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebhistoryitem.cpp: + (webkit_web_history_item_finalize): + (webkit_web_history_item_get_target): + * webkit/webkitwebresource.cpp: + * webkit/webkitwebsettings.cpp: + * webkit/webkitwebview.cpp: + +2010-03-28 Alexey Proskuryakov <ap@apple.com> + + Build fix. Include WindowsKeyboardCodes.h instead of KeyboardCodes.h. + + * WebCoreSupport/EditorClientGtk.cpp: + +2010-03-27 Sergio Villar Senin <svillar@igalia.com> + + Reviewed by Eric Seidel. + + FrameLoader emits onload-event when handling + dispatchDidHandleOnloadEvents + + [GTK] Improve reporting of frame loader callbacks in DRT + https://bugs.webkit.org/show_bug.cgi?id=36454 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents): + implemented, now it emits onload-event signal + * webkit/webkitwebview.cpp: added onload-event signal + +2010-03-25 Sergio Villar Senín <svillar@igalia.com> + + Reviewed by Xan Lopez. + + Added new API webkit_web_back_forward_list_clear. This function + clears the back forward list + + [GTK] http/history tests are failing + https://bugs.webkit.org/show_bug.cgi?id=36173 + + * tests/testwebbackforwardlist.c: + (test_webkit_web_back_forward_list_clear): + (main): added new unit test for the new API + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_clear): + * webkit/webkitwebbackforwardlist.h: new function that clears the + back forward list + +2010-03-24 Kent Tamura <tkent@chromium.org> + + Reviewed by Darin Adler. + + Make Icon::createIconForFiles() optional. + https://bugs.webkit.org/show_bug.cgi?id=35072 + + - Rename iconForFiles() to chooseIconForFiles(). + - Call Icon::createIconForFiles() from chooseIconForFiles(). + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + +2010-03-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + [GTK] Does not build with latest GTK+ development release + https://bugs.webkit.org/show_bug.cgi?id=36398 + + Fix building with newest GTK+ versions. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::windowRect): + (WebKit::ChromeClient::setWindowRect): + (WebKit::ChromeClient::unfocus): + (WebKit::ChromeClient::canTakeFocus): + (WebKit::ChromeClient::contentsSizeChanged): + * webkit/webkitprivate.cpp: + (currentToplevelCallback): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_print_full): + (webkit_web_frame_print): + * webkit/webkitwebview.cpp: + (webkit_web_view_grab_focus): + (webkit_web_view_focus_in_event): + (webkit_web_view_script_dialog): + +2010-03-18 Philip Chimento <philip.chimento@gmail.com> + + Reviewed by Oliver Hunt. + + Setting the GObject WebKitWebView property 'window-features' to NULL + causes a crash. + https://bugs.webkit.org/show_bug.cgi?id=36144 + + * tests/testwebview.c: Add unit test for this bug. + * webkit/webkitwebview.cpp: Don't allow the 'window-features' property + to be set to NULL. + * webkit/webkitwebwindowfeatures.cpp: + (webkit_web_window_features_equal): Don't examine the members of either + web_window_features argument if either is NULL, just return that they + are not equal. Additionally, if they are the same object, return that + they are equal. + +2010-03-16 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.1.90 release. + + * NEWS: + +2010-03-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Fix one too many empty lines in documentation of + window-obejct-cleared signal, which caused the documentation to be + rendered funny. Thanks to Martin Robinson for noticing. + + * webkit/webkitwebview.cpp: + +2010-03-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Add missing symbol to GeoLocation documentation + section. + + * docs/webkitgtk-sections.txt: + +2010-03-16 Martin Robinson <mrobinson@webkit.org> + + Reviewed by Xan Lopez. + + can't input korean into lower all input box except adress input box in webkit gtk launcher + https://bugs.webkit.org/show_bug.cgi?id=32290 + + Make the GTK+ EditorClient properly handle different types of input module + behavior such as commit and preedit signals that happen outside of key event + filtering and multiple times in a row. Filter keyup events as well as keydown + events and call gtk_im_context_focus_{in/out} when the WebView focus changes. + + Added tests for this behavior to the GTK+ unit tests. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): Handle this signal properly when it happens outside of + key event filtering. + (WebKit::imContextPreeditChanged): Immediately update the preedit state and do not reject + empty preedits, so that cancellation works properly. + (WebKit::EditorClient::updatePendingComposition): Add this method, which handles the + situation where a commit signal happens when there is still a pending commit. + (WebKit::EditorClient::shouldBeginEditing): Clear pending composition state before editing + starts. + (WebKit::EditorClient::shouldEndEditing): Clear pending composition state before editing ends. + (WebKit::EditorClient::handleKeyboardEvent): No longer special case preedits which happen during + key event filtering. When confirming a pending composition use insertText instead of confirmComposition. + (WebKit::EditorClient::handleInputMethodKeydown): + * WebCoreSupport/EditorClientGtk.h: Make pendingComposition a member, so that multiple WebViews + do not share state. + (WebKit::EditorClient::webView): Added. + (WebKit::EditorClient::treatContextCommitAsKeyEvent): Added. + (WebKit::EditorClient::clearPendingComposition): Added. + * tests/testkeyevents.c: + (test_keypress_events_load_status_cb): + (map_event_cb): + (setup_keyevent_test): + (test_keypress_events): + (element_text_equal_to): + (test_ime_load_status_cb): + (test_ime): + (main): + * webkit/webkitwebview.cpp: + (webkit_web_view_key_release_event): + (webkit_web_view_focus_in_event): + +2010-03-16 Yury Semikhatsky <yurys@chromium.org> + + Reviewed by Pavel Feldman. + + Introduce InspectorFrontendClient that provides InspectorFrontend with an interface to the embedder. InspectorClient now serves as a delegate for InspectorController and does not contain methods for managing inspector frontend window. That allows to create remote InspectorFrontendHost. + + Introduce InspectorFrontendClient that would provide InspectorFrontend with an interface to the embedder + https://bugs.webkit.org/show_bug.cgi?id=35036 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorClient::InspectorClient): + (WebKit::InspectorClient::inspectorDestroyed): + (WebKit::InspectorClient::openInspectorFrontend): + (WebKit::InspectorClient::highlight): + (WebKit::InspectorClient::hideHighlight): + (WebKit::InspectorClient::populateSetting): + (WebKit::InspectorClient::storeSetting): + (WebKit::InspectorFrontendClient::InspectorFrontendClient): + (WebKit::InspectorFrontendClient::~InspectorFrontendClient): + (WebKit::InspectorFrontendClient::destroyInspectorWindow): + (WebKit::InspectorFrontendClient::localizedStringsURL): + (WebKit::InspectorFrontendClient::hiddenPanels): + (WebKit::InspectorFrontendClient::bringToFront): + (WebKit::InspectorFrontendClient::closeWindow): + (WebKit::InspectorFrontendClient::attachWindow): + (WebKit::InspectorFrontendClient::detachWindow): + (WebKit::InspectorFrontendClient::setAttachedWindowHeight): + (WebKit::InspectorFrontendClient::inspectedURLChanged): + * WebCoreSupport/InspectorClientGtk.h: + +2010-03-15 Joanmarie Diggs <joanmarie.diggs@gmail.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=35502 + [Gtk] Objects of ATK_ROLE_TABLE should not implement AtkText + + New test to be sure we do not accidentally implement AtkText for tables + + * tests/testatk.c + (testWebkitAtkGetTextInTable): + (main): + +2010-03-09 Philippe Normand <pnormand@igalia.com> + + Reviewed by Holger Freyther. + + [GTK] GTK_WIDGET_IS_SENSITIVE is deprecated in GTK+ 2.20 + https://bugs.webkit.org/show_bug.cgi?id=35909 + + * webkit/webkitwebview.cpp: GTK_WIDGET_IS_SENSITIVE has been + deprecated in gtk 2.20. Use gtk_widget_is_sensitive when available. + +2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Kenneth Rohde Christiansen. + + Misc documentation fixes. Fixes (almost) all warnings emitted by + the documentation build process. Only the broken references to JSC + objects remain. + + * webkit/webkitsecurityorigin.cpp: + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebdatasource.cpp: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_class_init): + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_class_init): + +2010-03-11 Anders Carlsson <andersca@apple.com> + + Reviewed by David Hyatt. + + Remove invalidateContents, it isn't used and it never makes sense to only invalidate the contents. + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + +2010-03-09 Philippe Normand <pnormand@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] testkeyevents doesn't stop if input event injection fails + https://bugs.webkit.org/show_bug.cgi?id=35922 + + * tests/testkeyevents.c: + (load_status_cb): Added a safeguard to exit from the test if the + input event injection failed. + +2010-03-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Documentation control files update for 1.1.23. + + * docs/webkitgtk-docs.sgml: + +2010-03-08 Csaba Osztrogonác <ossy@webkit.org> + + [GTK] Unreviewed buildfix after r55688. + + * webkit/webkitdownload.cpp: + (webkit_download_start): + +2010-03-02 Adam Treat <atreat@rim.com> + + Reviewed by Dave Hyatt. + + Adapt the gtk port to the refactoring of repaint methods. + + https://bugs.webkit.org/show_bug.cgi?id=34214 + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + +2010-03-08 Eric Uhrhane <ericu@chromium.org> + + Reviewed by David Levin. + + Remove the now-redundant Settings fields for the Database + https://bugs.webkit.org/show_bug.cgi?id=35763 + + No new tests; this code isn't called. + + * webkit/webkitwebview.cpp: Remove the calls into Settings. + (DNDContentsRequest::webkit_web_view_update_settings): + (DNDContentsRequest::webkit_web_view_settings_notify): + +2010-03-06 Arno Renevier <arno@renevier.net> + + Reviewed by Eric Seidel. + + [Gtk] GEOLOCATION_POLICY_DECISION_CANCELLED unused + https://bugs.webkit.org/show_bug.cgi?id=35803 + + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_class_init): + +2010-03-03 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Gustavo Noronha. + Patch by Antonio Gomes <tonikitoo@webkit.org> + + [Gtk] Add 'enable-spatial-navigation' setting for toggle Spatial Navigation on/off + https://bugs.webkit.org/show_bug.cgi?id=35701 + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_update_settings): + (DNDContentsRequest::webkit_web_view_settings_notify): + +2010-03-03 Fridrich Strba <fridrich.strba@bluewin.ch> + + Reviewed by Xan Lopez. + + Miscellaneous little fixes for the windows build of webkit-gtk + https://bugs.webkit.org/show_bug.cgi?id=35640 + + * webkit/webkitdownload.cpp: Windows headers define ERROR + which breaks the build. Undef ERROR if it is defined. + +2010-03-03 Philippe Normand <pnormand@igalia.com> + + Unreviewed, build fix after r55452. + + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_settings_notify): added missing braces. + +2010-03-02 Eric Uhrhane <ericu@chromium.org> + + Reviewed by David Levin. + + Move database enable bit fully out of settings + This is stage one of a three-stage commit [webkit, then chromium, then + webkit again]. In this change I'm adding calls to + Database::setIsAvailable inside Settings::setDatabaseEnabled and + anywhere else that called it, and switching webkit fully over to using + that flag [added in a previous checkin]. Phase two will remove + Chromium's use of Settings for the Database, and phase three will remove + the Setting for the Database enable entirely, leaving only + Database::isAvailable/setIsAvailable. + + No new tests; tested by existing storage tests. + + https://bugs.webkit.org/show_bug.cgi?id=35310 + + * webkit/webkitwebview.cpp: Add calls to Database::setIsAvailable + (DNDContentsRequest::webkit_web_view_update_settings): + (DNDContentsRequest::webkit_web_view_settings_notify): + +2010-03-02 Arno Renevier <arno@renevier.net> + + Reviewed by Gustavo Noronha Silva. + + [Gtk] implements ChromeClient::requestGeolocationPermissionForFrame + https://bugs.webkit.org/show_bug.cgi?id=35210 + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ChromeClientGtk.h: + * docs/webkitgtk-sections.txt: + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitgeolocationpolicydecision.cpp: Added. + (webkit_geolocation_policy_decision_class_init): + (webkit_geolocation_policy_decision_init): + (webkit_geolocation_policy_decision_new): + (webkit_geolocation_policy_allow): + (webkit_geolocation_policy_deny): + * webkit/webkitgeolocationpolicydecision.h: Added. + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_class_init): + * webkitmarshal.list: + +2010-03-01 José Millán Soto <jmillan@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Right click does not activate text entry + https://bugs.webkit.org/show_bug.cgi?id=29177 + + Makes the frame handle the mouse click event before sending the + context menu event. + + * webkit/webkitwebview.cpp: + (PopupMenuPositionFunc): + Function created to make the popup menu appear in the correct position, especially + when invoked from the keyboard. + (webkit_web_view_forward_context_menu_event): + Mouse click event is sent to frame before creating context menu, + PopupMenuPositionFunc used to determine the position where the menu should appear. + (webkit_web_view_popup_menu_handler): + Improved focused node position detection. Event button set to right button. + +2010-03-01 Jakob Petsovits <jpetsovits@rim.com> + + Reviewed by Adam Barth. + + Adapt to the new ZoomMode enum. + https://bugs.webkit.org/show_bug.cgi?id=35347 + + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_apply_zoom_level): + +2010-03-01 Kalle Vahlman <zuh@iki.fi> + + Reviewed by Gustavo Noronha Silva. + + Queue a resize when either of the content dimensions change + https://bugs.webkit.org/show_bug.cgi?id=35489 + + The check for size changes only queued a resize if both of the content + dimensions change, leaving the widget size out-of-sync if eg. only the + width changes. + + * WebCoreSupport/ChromeClientGtk.cpp: + +2009-12-04 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Needs proper reporting of frame loader callbacks, in DRT + https://bugs.webkit.org/show_bug.cgi?id=32170 + + Add new signal to report when the document load is finished for a + frame. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad): + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2010-02-26 Antonio Gomes <tonikitoo@webkit.org> + + Complementary commit of r55300. Missing "notify::" to signal name. + + * tests/testwebview.c: + (test_webkit_web_view_grab_focus): + +2010-02-26 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Xan Lopez. + Patch by Antonio Gomes <tonikitoo@webkit.org> + + [GTK] Make webkit_web_view_grab_focus to active focus controller. + https://bugs.webkit.org/show_bug.cgi?id=35402 + + When programatically setting focus to an element in an inner document, + calling "hasFocus()" from this document returns FALSE, because + document's FocusController is not activated. It does not happen + if |document| is the main document. + + Making webkit_web_view_grab_focus to actually activate the FocusController, + fixes the issue. + + * tests/testwebview.c: + (server_callback): + (test_webkit_web_view_grab_focus): + * webkit/webkitwebview.cpp: + (webkit_web_view_grab_focus): + +2010-02-26 Alejandro G. Castro <alex@igalia.com> + + Unreviewed. + + Reverted last patch (r55295), it causes problems with the frames. + + * WebCoreSupport/ChromeClientGtk.cpp: + +2010-02-19 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Some region checks in scroll are not required + https://bugs.webkit.org/show_bug.cgi?id=35142 + + Removes some of the operations checking the moved and invalidated + regions when scrolling, it is done already in + gdk_window_move_region. + + * WebCoreSupport/ChromeClientGtk.cpp: + +2010-02-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [Gtk] crashed when destroying + https://bugs.webkit.org/show_bug.cgi?id=31271 + + NULL-check the page before relaying the focus out event, since + this might happen when destroying the widget without destroying + its parent, and we currently crash. + + * tests/testwebview.c: + (delayed_destroy): + (test_webkit_web_view_destroy): + (main): + * webkit/webkitwebview.cpp: + (webkit_web_view_focus_in_event): + +2010-02-24 Krzysztof Kotlenga <pocek@users.sf.net> + + Reviewed by Gustavo Noronha Silva. + + [Gtk] Creation of a WebkitWebView widget is very slow + https://bugs.webkit.org/show_bug.cgi?id=30032 + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::ignoreWordInSpellDocument): Change 'langs' to 'dicts' + to reflect the fact that the list just holds Enchant dictionaries now. + (WebKit::EditorClient::learnWord): Ditto. + (WebKit::EditorClient::checkSpellingOfString): Ditto. + (WebKit::EditorClient::getGuessesForWord): Ditto. + * webkit/webkitprivate.h: Remove the now unused SpellLanguage struct. + * webkit/webkitwebsettings.cpp: Change function call to reflect new + webkit_web_settings_get_enchant_dicts name. + (get_enchant_broker): Add this method which returns the enchant broker singleton. + (free_spell_checking_language): The list contents have changed, so change + the way each element is freed. + (webkit_web_settings_finalize): Change to reflect 'spell_checking_languages_list' + to 'enchant_dicts' member name change. + (webkit_web_settings_set_property): Use the broker singleton here instead of making + a new one for each language. The Enchant dictionary is now the list payload. + (webkit_web_settings_copy): More name-change updates. + (webkit_web_settings_get_enchant_dicts): Ditto. + +2010-02-23 Leandro Pereira <leandro@profusion.mobi> + + Reviewed by Gustavo Noronha Silva. + + Fixes references to GOwnPtr and GRefPtr so the GTK+ port builds + again. + http://webkit.org/b/35084 + + * WebKit/gtk/webkit/webkitwebview.cpp: + +2010-02-23 Shinichiro Hamaji <hamaji@chromium.org> + + Reviewed by Eric Seidel. + + [Gtk] Implement layoutTestController.numberOfPages + https://bugs.webkit.org/show_bug.cgi?id=35228 + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_number_of_pages): + +2010-02-23 José Millán Soto <jmillan@igalia.com> + + Reviewed by Xan Lopez. + + [Gtk] Server message not shown on http authentication + https://bugs.webkit.org/show_bug.cgi?id=34219 + + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + Server message is displayed, messageLabel and message variables were + renamed to avoid confusion. + +2010-02-23 Steve Block <steveblock@google.com> + + Reviewed by Darin Adler. + + Adds ChromeClient::cancelGeolocationPermissionRequestForFrame + https://bugs.webkit.org/show_bug.cgi?id=34962 + + This method is required so that a Geolocation object can cancel an + asynchronous permission request. This allows the chrome client to cancel + any UI it is showing for the permission request. + + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::cancelGeolocationPermissionRequestForFrame): + +2010-02-23 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Do not do unnecessary work during size_allocate. + + FrameView::resize will already queue a layout, so there's no need + to force one ourselves. On top of that, the layout function + already adjusts the view size when needed, so there's no need to + do that manually either. No change in the layout tests or unit + tests after this. + + * webkit/webkitwebview.cpp: + (webkit_web_view_size_allocate): + +2010-02-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for release. + + * NEWS: + +2010-02-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [Soup] loses information related to message flags when converting from/to Resource{Request,Response} + https://bugs.webkit.org/show_bug.cgi?id=35093 + + Update the flags that are stored in the request, when the response + is received. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidReceiveResponse): + +2010-02-20 Gustavo Noronha Silva <gns@gnome.org> + + Unreviewed. Trivial fix - unnecessary variable got added by + mistake. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidReceiveResponse): + +2010-02-18 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] WebKitDownload documentation is incomplete + https://bugs.webkit.org/show_bug.cgi?id=35018 + + Concretely the error signal was undocumented. Also two relevant enums + were not included. + + * docs/webkitgtk-sections.txt: + * docs/webkitgtk.types: + * webkit/webkitdownload.cpp: + (webkit_download_class_init): + +2010-02-17 Dmitry Titov <dimich@chromium.org> + + Reviewed by David Levin, Darin Fisher, Simon Hausmann. + + When a live iframe element is moved between pages, it still depends on the old page. + https://bugs.webkit.org/show_bug.cgi?id=34382 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument): + Added empty implementation of a new virtual method. + + * WebCoreSupport/FrameLoaderClientGtk.h: + +2010-02-17 Kent Tamura <tkent@chromium.org> + + Reviewed by Eric Seidel. + + Introduces new Icon loading interface in order to support + asynchronous loading. + https://bugs.webkit.org/show_bug.cgi?id=32054 + + Add an empty implementation of ChromeClient::iconForFiles(). + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::iconForFiles): + * WebCoreSupport/ChromeClientGtk.h: + +2010-02-17 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Rename 'enable-java' setting to 'enable-java-applet', since it + only controls whether <applet> is supported or not instead of + whether all Java content is supported or not. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_update_settings): + (DNDContentsRequest::webkit_web_view_settings_notify): + +2010-02-17 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [Linux] Webkit incompatible with Java plugins + https://bugs.webkit.org/show_bug.cgi?id=24912 + + Implement FrameLoaderClient::createJavaAppletWidget. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createJavaAppletWidget): + +2010-02-17 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [Linux] Webkit incompatible with Java plugins + https://bugs.webkit.org/show_bug.cgi?id=24912 + + Add a WebKitWebSetting to enable/disable the Java plugin support. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2010-02-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Test that data URIs that cause downloads to be started do not crash. + + * tests/testdownload.c: + (mime_type_policy_decision_requested_cb): + (idle_quit_loop_cb): + (test_webkit_download_data): + (main): + +2010-02-17 Philippe Normand <pnormand@igalia.com> + + Reviewed by Xan Lopez. + + Missing property warning after r54873 + https://bugs.webkit.org/show_bug.cgi?id=35023 + + Add a new WebKitWebSettings setting, 'enable-file-access-from-file-uris', set to + FALSE by default, that when enabled will assign each file:// URI + their own security domain. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + +2010-02-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Check if the handle has a SoupMessage before trying to use + it. This will be the case in non-HTTP(S) URLs. + + * webkit/webkitdownload.cpp: + (webkit_download_new_with_handle): + (webkit_download_start): + +2010-02-16 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Add a new WebKitWebSettings setting, 'auto-resize-window', set to + FALSE by default, that when enabled will apply any resizes or + moves done by a page through various DOM methods (moveTo, + resizeTo, moveBy, resizeBy). + + * WebCoreSupport/ChromeClientGtk.cpp: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + +2010-02-15 Emilio Pozuelo Monfort <pochu27@gmail.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Fails to build on GNU/Hurd because of PATH_MAX usage + https://bugs.webkit.org/show_bug.cgi?id=34920 + + Use dynamic allocation instead of fixed PATH_MAX size buffers to + fix the build on GNU/Hurd, where PATH_MAX is undefined. + + * tests/testmimehandling.c: + (main): + * tests/testwebview.c: + (main): + +2010-02-14 Diego Escalante Urrelo <descalante@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [gtk] WebKitDownload's currentSize property is guint, should be guint64 + https://bugs.webkit.org/show_bug.cgi?id=34829 + + Actually use a guint64 for current-size property in WebKitDownload, we + were using a guint which is likely the cause for wrong sizes for files + over 4 Gb. + + * webkit/webkitdownload.cpp: + +2010-02-09 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + [GTK] Hits assertion on history back, with page cache enabled, in specific conditions + https://bugs.webkit.org/show_bug.cgi?id=34773 + + Make sure cached frames have their scrollbars disconnected from + the WebView's adjustments. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::savePlatformDataToCachedFrame): + +2010-02-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Set GtkAdjustments on our FrameView when loading a page in the PageCache + https://bugs.webkit.org/show_bug.cgi?id=34754 + + Test that lower, and upper bounds are kept when goibg back with + page cache enabled, and disabled. Page cache behaviour is still a + bit broken (see FIXME). + + * tests/testwebview.c: + (server_callback): + (map_event_cb): + (do_test_webkit_web_view_adjustments): + (test_webkit_web_view_adjustments): + (main): + +2010-02-09 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Set GtkAdjustments on our FrameView when loading a page in the PageCache + https://bugs.webkit.org/show_bug.cgi?id=34754 + + Set the Gtk Adjustments of the FrameViews when they are restored + from the PageCache too. Right we only do it for the newly created + FrameViews in transitionToCommittedForNewPage, but we it also + needs to be done in the equilavent transition method for cached + pages. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::postCommitFrameViewSetup): + (WebKit::FrameLoaderClient::transitionToCommittedFromCachedFrame): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2010-02-08 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] Implement FrameLoaderClient::hasWebView + https://bugs.webkit.org/show_bug.cgi?id=34682 + + Used for sanity-check ASSERTS in the FrameLoader code. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::hasWebView): + +2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + News about 1.1.21. + + * NEWS: + +2010-02-05 Shinichiro Hamaji <hamaji@chromium.org> + + Reviewed by Gustavo Noronha Silva. + + [Gtk] Implement layoutTestController.pageNumberForElementById + https://bugs.webkit.org/show_bug.cgi?id=34572 + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_page_number_for_element_by_id): + +2010-02-04 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Add and cleanup return values of signals in view and frame + https://bugs.webkit.org/show_bug.cgi?id=33484 + + Add missing and cleanup return values of web frame and web view signals. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_class_init): + * webkit/webkitwebview.cpp: + (DNDContentsRequest::webkit_web_view_class_init): + +2010-02-02 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + Changes in 1.1.20, and documentation control files update. + + * NEWS: + * docs/webkitgtk-docs.sgml: + +2010-02-02 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] When selection changes selections in other WebView are not collapsed + https://bugs.webkit.org/show_bug.cgi?id=34043 + + Collapse the selection of a WebView even when the new selection owner is + a new WebView. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::clearClipboardContentsCallback): Only clear the DataObject we are setting + is not the same as the one referenced in this callback. Use the same behavior for + collapsing the selection. + (WebKit::PasteboardHelperGtk::writeClipboardContents): Instead of recording a boolean + record the actual data used while writing to the clipboard. + +2010-01-27 Martin Robinson <mrobinson@webkit.org> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Expose the IM context via the API + https://bugs.webkit.org/show_bug.cgi?id=33327 + + Expose the GtkIMMultiContext as a property of WebKitWebView. This will + allow embedders to generate the input method context menu entries and + make testing certain IM context behavior possible. + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_property): + (DNDContentsRequest::webkit_web_view_get_im_context): + (DNDContentsRequest::webkit_web_view_class_init): + +2010-01-19 Joanmarie Diggs <joanmarie.diggs@gmail.com> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=30883 + [Gtk] Implement AtkText for HTML elements which contain text + + Adds two news tests. + + * tests/testatk.c + (testWebkitAtkGetTextInParagraphAndBodySimple): + (testWebkitAtkGetTextInParagraphAndBodyModerate): + (main): + +2010-01-19 Gustavo Noronha Silva <gns@gnome.org> + + Unreviewed. Changes to the test I forgot to make after a last + minute change before landing 53294 - this causes make distcheck to + fail. + + * tests/testloading.c: + (load_error_status_changed_cb): + (test_loading_error): + +2010-01-19 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + News items for 1.1.19. + + * NEWS: + +2010-01-19 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + [GTK] More crashes related to the clipboard management + https://bugs.webkit.org/show_bug.cgi?id=33746 + + Pass the WebKitWebView object (which is a GObject, thus + ref-counted) to the clipboard functions instead of passing the + Page - this allows us to explicitely protect the object inbetween + the clipboard call and its callbacks, which fixes the crash. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::respondToChangedSelection): + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::getClipboardContentsCallback): + (WebKit::clearClipboardContentsCallback): + (WebKit::PasteboardHelperGtk::writeClipboardContents): + +2010-01-15 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + Original patch by David Ronis <david.ronis@mcgill.ca> + + Upgrade 1.1.17->1.1.18 fails: GTK_WIDGET_TOPLEVEL' was not declared in this scope + https://bugs.webkit.org/show_bug.cgi?id=33486 + + Deprecated symbols replaced for gtk+ versions over 2.18. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::windowRect): + * webkit/webkitprivate.cpp: + (currentToplevelCallback): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_print_full): + (webkit_web_frame_print): + * webkit/webkitwebview.cpp: + (webkit_web_view_focus_in_event): + +2010-01-14 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Eric Seidel. + + [GTK] Crashes cleaning clipboard contents, with page cache enabled + https://bugs.webkit.org/show_bug.cgi?id=32900 + + Null-check the focus controller to avoid crashing. Could not find + a way to reproduce this consistently, thus no test. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::clearClipboardContentsCallback): + +2010-01-14 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Oliver Hunter. + + [GTK] couple fixes for signal emissions, and property notifications + https://bugs.webkit.org/show_bug.cgi?id=33428 + + Do not emit signals and property notifications for error + pages. The notifications are not really useful for anything, you + can get them back by overriding the error pages, and it avoids a + number of hacks. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::dispatchDidFinishLoad): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout): + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * WebCoreSupport/FrameLoaderClientGtk.h: + * tests/testloading.c: + (load_error_status_changed_cb): + (test_loading_error): + +2010-01-14 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Xan Lopez. + + [GTK] Enable DOM clipboard and drag-and-drop access + https://bugs.webkit.org/show_bug.cgi?id=30623 + + Use DataObjectGtk when setting and clearing pasteboard data on + the GDK_SELECTION_PRIMARY clipboard. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::respondToChangedSelection): + (WebKit::EditorClient::EditorClient): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::fillSelectionData): + (WebKit::targetListForDataObject): + (WebKit::getClipboardContentsCallback): + (WebKit::clearClipboardContentsCallback): + (WebKit::PasteboardHelperGtk::writeClipboardContents): + * WebCoreSupport/PasteboardHelperGtk.h: + +2010-01-14 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + Review the tooltip implementation + https://bugs.webkit.org/show_bug.cgi?id=32819 + + Change the GTK tooltip implementation to avoid the workaround that + we are currently using. Now we use a new private API to set the + text and all the tooltip handling is done in the webview widget. + + * WebCoreSupport/ChromeClientGtk.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_set_tooltip_text): Added, new private API. + (webkit_web_view_query_tooltip): Added + +2010-01-09 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + [GTK] couple fixes for signal emissions, and property notifications + https://bugs.webkit.org/show_bug.cgi?id=33428 + + Fix commitedLoad being called where it should not, causing it to + be called one time too many in some cases. We now match Qt's and + Mac's behavior here. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::finishedLoading): + * tests/testloading.c: + (load_error_status_changed_cb): + +2010-01-08 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + [GTK] loading test should use SoupServer instead of actual sites + https://bugs.webkit.org/show_bug.cgi?id=33353 + + Make all the loading tests use SoupServer, instead of fetching + stuff from the Internet. + + * tests/testloading.c: + (server_callback): + (get_uri_for_path): + (test_loading_status): + (test_loading_error): + (test_loading_cancelled): + (load_wentback_status_changed_cb): + (load_error_test): + (test_loading_goback): + (main): + +2010-01-06 Joanmarie Diggs <joanmarie.diggs@gmail.com> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=30883 + [Gtk] Implement AtkText for HTML elements which contain text + + * tests/testatk.c + (test_webkit_atk_get_text_at_offset): + (test_webkit_atk_get_text_at_offset_forms): + (test_webkit_atk_get_text_at_offset_newlines): + +2010-01-05 Gustavo Noronha Silva <gns@gnome.org> + + Updated docs for 1.1.18 release. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2010-01-05 Xan Lopez <xlopez@igalia.com> + + Update for 1.1.18 release. + + * NEWS: + +2010-01-04 Maciej Stachowiak <mjs@apple.com> + + Reviewed by Darin Fisher. + + Reorganize, document and rename OS() platform macros. + https://bugs.webkit.org/show_bug.cgi?id=33198 + + Adapt to name changes. + + * webkit/webkitwebsettings.cpp: + (webkit_get_user_agent): + +2010-01-04 Maciej Stachowiak <mjs@apple.com> + + Reviewed by Adam Barth. + + Reorganize, document and rename CPU() platform macros. + https://bugs.webkit.org/show_bug.cgi?id=33145 + + * webkit/webkitwebsettings.cpp: + (webkit_get_user_agent): + +2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Remove emission of signal that does not exist. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::inspectorDestroyed): + (WebKit::InspectorClient::webViewDestroyed): + +2009-12-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Unset the adjustments in our FrameView when detaching from + parent. Fixes some crashers when transitioning to a new page from + a scrolled page. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::detachedFromParent2): + +2009-12-20 Xan Lopez <xlopez@igalia.com> + + Rubber-stamped by Gustavo Noronha. + + Disable the page cache by default since: + + - It was previously off by default. + - There are still some issues when enabling it. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Provides a new API to copy WebKitWebHistoryItem objects. + + * webkit/webkitwebhistoryitem.cpp: + (webkit_web_history_item_copy): + * webkit/webkitwebhistoryitem.h: + +2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Make sure we get the URI that is being loaded when updating + WebKitWebFrame's knowledge of it. This was causing problems now + that page cache is enabled. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + * tests/testloading.c: + (load_goback_status_changed_cb): + (load_wentback_status_changed_cb): + (test_loading_goback): + (main): + +2009-12-20 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + [GTK] Cache control APIs + https://bugs.webkit.org/show_bug.cgi?id=24001 + + Original patch by Bobby Powers <bobby@laptop.org> + + Added new API to specify cache models for GTK port. + + * webkit/webkitprivate.cpp: + (webkit_init): set a default cache model. + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + (webkit_set_cache_model): Added function. + (webkit_get_cache_model): Added function. + +2009-12-20 Xan Lopez <xlopez@igalia.com> + + Revert the previous patch, it introduces some failures in the + bots. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2009-12-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + [GTK] crash when loading new page + https://bugs.webkit.org/show_bug.cgi?id=32752 + + Wait until the document is attached to adjust our alignments, + since we need to make sure the FrameView in the document content + render object matches the newly created FrameView for the new + page, otherwise we'll try to relayout the wrong view. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Create a new WebKitDataSource object when attaching to a frame, if + one does not exist. This may happen when we are fetching data from + the page cache. + + * WebCoreSupport/DocumentLoaderGtk.cpp: + (WebKit::DocumentLoader::attachToFrame): + (WebKit::DocumentLoader::unrefDataSource): + +2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Make sure the text encoding machinery is initialized from the main + frame, before opening the icon database. + + * webkit/webkitprivate.cpp: + (webkit_init): + +2009-12-19 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + Fixed the problem when pasting in the same window with the + middle-button, now we store a reference to the range instead of + requesting it every time, and we do not release it until the + clipboard is requested. + https://bugs.webkit.org/show_bug.cgi?id=28153 + + * WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp: + * WebKit/gtk/WebCoreSupport/EditorClientGtk.h: + +2009-12-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Protect download objects when reporting errors, to make sure the + download stays alive between the status change notification, and + the error signal emission. + + * webkit/webkitdownload.cpp: + (webkit_download_error): + +2009-12-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix gtk-doc of webkit_web_resource_new. + + * webkit/webkitwebresource.cpp: + +2009-12-18 Adam Roben <aroben@apple.com> + + GTK build fix + + * webkit/webkitprivate.cpp: Added #include. + +2009-12-18 Kalle Vahlman <kalle.vahlman@movial.com> and Alejandro G. Castro <alex@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Add enable-page-cache property to WebSettings for disabling the Page Cache + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + +2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + More make distcheck fixes. Use a more robust solution to making + sure we are in the correct directory for running these tests. + + * tests/testmimehandling.c: + (main): + * tests/testwebview.c: + (main): + +2009-12-17 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha Silva. + + [GTK] Don't assume downloads are always synchronous + http://bugs.webkit.org/show_bug.cgi?id=32359 + + * tests/testdownload.c: + (download_requested_cb): + (set_filename): + (test_webkit_download_perform): + (test_webkit_download_synch): + (test_webkit_download_asynch): + (main): Test downloads synchronously and asynchronously. + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + (webkit_web_view_request_download): Only try to start a requested + download if the destination URI is set and clarify the documentation. + +2009-12-17 Christian Dywan <christian@twotoasts.de> + + Reviewed by Xan Lopez. + + Deprecate the title-changed signal of WebKitWebFrame. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_class_init): + +2009-12-17 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs + https://bugs.webkit.org/show_bug.cgi?id=21599 + + Convert a use of GOwnPtr for a reference counted type to GRefPtr. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createPlugin): + +2009-12-17 Evan Martin <evan@chromium.org> + + Reviewed by Xan Lopez. + + Expose the page workarounds ("quirks") setting to the GTK+ WebKit API. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + +2009-12-16 Dan Winship <danw@gnome.org> + + Reviewed by Gustavo Noronha Silva. + + Content-Encoding support + + https://bugs.webkit.org/show_bug.cgi?id=522772 + + * webkit/webkitprivate.cpp: + (webkit_init): add a SoupContentDecoder feature to the session + +2009-12-16 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha Silva. + + Deprecate the old loading signals load-started, load-committed, + load-finished, load-progress-changed and change unit tests to use + load-status instead. + + * tests/testmimehandling.c: + (idle_quit_loop_cb): + (test_mime_type): use notify::load-status + * tests/testwebdatasource.c: + (notify_load_status_unreachable_cb): + (notify_load_status_cb): + (test_webkit_web_data_source): + (test_webkit_web_data_source_unreachable_uri): Remove uses of + g_main_loop_is_running. It's an error if the loop is wrongly terminated. + * tests/testwebresource.c: + (notify_load_status_cb): + (test_web_resource_loading): + (notify_load_status_sub_cb): + (test_web_resource_sub_resource_loading): use notify::load-status + * tests/testwebview.c: + (idle_quit_loop_cb): + (test_webkit_web_view_icon_uri): + * tests/testwindow.c: + (notify_load_status_cb): + (test_webkit_window_scrollbar_policy): use notify::load-status + * webkit/webkitwebframe.cpp: + (webkit_web_frame_class_init): + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): Deprecate old load signals. + +2009-12-16 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha Silva. + + Take into account favicon.ico in the webresource test. + + * tests/testwebresource.c: + (test_web_resource_sub_resource_loading): + +2009-12-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Add tab_key_cycles_through_elements to copies of + WebKitWebSettings. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_copy): + +2009-12-16 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha Silva. + + [GTK] webkit_web_navigation_action_get_button() documentation + https://bugs.webkit.org/show_bug.cgi?id=25555 + + Small documentation improvement for webkit_web_navigation_action_get_button. + + * webkit/webkitwebnavigationaction.cpp: + +2009-12-13 Sam Weinig <sam@webkit.org> + + Reviewed by Dan Bernstein. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=32499 + Add client based Geolocation provider + + Add first cut of a client based Geolocation provider. This is guarded by + ENABLE(CLIENT_BASED_GEOLOCATION) and is off by default for now. This adds a + GeolocationControllerClient interface that no-one currently implements, + but will in a subsequent patch. + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + +2009-12-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + New setting to allow applications to completely suppress the + default context menu that is generated by WebKit. This allows them + to still pass the event to the default handler without needing to + use ugly hacks such as handling populate-popup, and removing all + the items from the default context menu. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_forward_context_menu_event): + +2009-12-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Also give the right click event to the frame's event handler, if + there WebCore decides to not generate the default context + menu. This fixes some pages that handle right-button clicks for + things other than context menu creation. + + * webkit/webkitwebview.cpp: + (webkit_web_view_forward_context_menu_event): + +2009-12-13 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=31014 + [Gtk] Build fails with gtk+-2.10 (no tested with older releases) + + Guard GTK+ 2.12 specific tooltip code with #ifdef. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + +2009-12-11 Christian Dywan <christian@twotoasts.de> + + Reviewed by Eric Seidel. + + [GTK] Build with --disable-svg is broken + http://bugs.webkit.org/show_bug.cgi?id=32361 + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_pause_svg_animation): Fix ENABLE(SVG) guards. + +2009-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Add a missing null-check, that is causing some crash reports. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + +2009-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Should provide an API to control the IconDatabase + https://bugs.webkit.org/show_bug.cgi?id=32334 + + First step towards a full IconDatabase API. This provides + notification for pages with favicons, and lets clients handle + them. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::registerForIconNotification): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + * tests/resources/blank.ico: Added. + * tests/testwebview.c: Added. + (server_callback): + (idle_quit_loop_cb): + (icon_uri_changed_cb): + (icon_loaded_cb): + (test_webkit_web_view_icon_uri): + (main): + * webkit/webkitprivate.cpp: + (closeIconDatabaseOnExit): + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_property): + (webkit_web_view_finalize): + (webkit_web_view_class_init): + (webkit_web_view_get_icon_uri): + * webkit/webkitwebview.h: + +2009-12-08 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha Silva. + + Point out the meaning of "Content-Disposition" when implementing the + mime-type-policy-decision-requested signal. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Doesn't respect Content-Disposition for downloads, and provides no way for apps to do that + https://bugs.webkit.org/show_bug.cgi?id=32247 + + Provide a way for applications to respect Content-Disposition, by + fetching the WebKitNetworkResponse from the frame during + mime-type-policy-decision-requested. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): Download + content when Content-Disposition is attachment. + * tests/testmimehandling.c: + (server_callback): + (mime_type_policy_decision_requested_cb): + * tests/testwebframe.c: + (test_webkit_web_frame_response): + (main): + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_network_response): + * webkit/webkitwebframe.h: + +2009-12-07 Gyuyoung Kim <gyuyoung@gmail.com> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=32024 + [GTK] WebKit does not compile without JAVASCRIPT_DEBUGGER + + Fix build errors when javascript-debugger is disabled on GTK + + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_set_property): + (webkit_web_inspector_get_property): + +2009-12-07 Joanmarie Diggs <joanmarie.diggs@gmail.com> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25415 + [GTK][ATK] Please implement support for get_text_at_offset + + Eliminate the segfaults which occur when accessing the text interface now + implemented by text controls. + + * tests/testatk.c + (test_webkit_atk_get_text_at_offset_textarea): + (test_webkit_atk_get_text_at_offset_text_input): + (main): + +2009-12-06 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + New test to make sure we do not regress this feature anymore. All + test files were created by me. + + [GTK] REGRESSION: webkit thinks it can render PDFs + https://bugs.webkit.org/show_bug.cgi?id=32183 + + * tests/resources/test.html: Added. + * tests/resources/test.ogg: Added. + * tests/resources/test.pdf: Added. + * tests/resources/test.txt: Added. + * tests/testmimehandling.c: Added. + (server_callback): + (idle_quit_loop_cb): + (mime_type_policy_decision_requested_cb): + (test_mime_type): + (test_mime_pdf): + (test_mime_html): + (test_mime_text): + (test_mime_ogg): + (main): + +2009-12-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Use a better URI for the unreachable test. localhost:80 is very + likely to be open. + + * tests/testwebdatasource.c: + (load_finished_unreachable_cb): + (test_webkit_web_data_source_unreachable_uri): + +2009-12-03 Brady Eidson <beidson@apple.com> + + Reviewed by Sam Weinig. + + <rdar://problem/7214236> and http://webkit.org/b/32052 - Implement HTML5 state object history API + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidPushStateWithinPage): + (WebKit::FrameLoaderClient::dispatchDidReplaceStateWithinPage): + (WebKit::FrameLoaderClient::dispatchDidPopStateWithinPage): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com> + + Reviewed by Timothy Hatcher. + + Web Inspector: Simplify the settings support in inspector controller. + + https://bugs.webkit.org/show_bug.cgi?id=32076 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::populateSetting): + (WebKit::InspectorClient::storeSetting): + * WebCoreSupport/InspectorClientGtk.h: + +2009-12-03 Ben Murdoch <benm@google.com> + + Reviewed by Brady Eidson. + + [Android] The FrameLoaderClient is unaware of BackForwardList changes. + https://bugs.webkit.org/show_bug.cgi?id=31914 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidAddBackForwardItem): Add an empty implementation. Method added to FrameLoaderClient by Android (see bug). + (WebKit::FrameLoaderClient::dispatchDidRemoveBackForwardItem): ditto. + (WebKit::FrameLoaderClient::dispatchDidChangeBackForwardIndex): ditto. + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com> + + Reviewed by Simon Fraser. + + Add SVG animation test framework with 'snapshot' functionality + https://bugs.webkit.org/show_bug.cgi?id=31897 + + Add API used by the new 'sampleSVGAnimationForElementAtTime' DRT method, + forwarding the call to SVGDocumentExtensions, if SVG is enabled. + + Implemented just like the existing pauseAnimation* methods for CSS animations. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_pause_svg_animation): + +2009-11-30 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Prepare for 1.1.17 release. + + * NEWS: + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Oliver Hunt. + + Move GOwnPtr* from wtf to wtf/gtk + https://bugs.webkit.org/show_bug.cgi?id=31793 + + * webkit/webkitwebview.cpp: Change the path for GOwnPtr.h. + +2009-11-24 Joanmarie Diggs <joanmarie.diggs@gmail.com> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25415 + [GTK][ATK] Please implement support for get_text_at_offset + + When building up the pango layout from text boxes, only append a + newline char after verifying there are no more boxes on this line. + + * tests/testatk.c + (test_webkit_atk_get_text_at_offset_newlines): + (main): + +2009-11-19 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Gustavo Noronha Silva. + + Web Inspector: Implement "show inspector" in WebKit GTK + API and enable console tests. + + https://bugs.webkit.org/show_bug.cgi?id=31669 + + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_show): + * webkit/webkitwebinspector.h: + +2009-11-18 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha. + + [GTK] Tab key does not cycle through elements by default + https://bugs.webkit.org/show_bug.cgi?id=31505 + + Properly localize documentation strings for the + tab-key-cycles-through-elements property. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-11-17 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha. + + [GTK] Tab key does not cycle through elements by default + https://bugs.webkit.org/show_bug.cgi?id=31505 + + Ensure that WebKitWebSettings tab-key-cycles-through-elements + property is true by default with the G_PARAM_CONSTRUCT_FLAG. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-11-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] Failing test media/video-document-types.html + https://bugs.webkit.org/show_bug.cgi?id=31352 + + Match what Mac has been doing since r36001: cancel the main load, + and handle failures caused by 'will be handled by plugin' errors. + + Covered by test media/video-document-types.html + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::shouldFallBack): + +2009-11-17 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Timothy Hatcher. + + Web Inspector: Make DRT show web inspector for tests in inspector/ folder. + - Updated DRT to show/close inspector for all tests under /inspector + - Introduced LayoutTestController::setTimelineProfilingEnabled and + WebInspector::setTimelineProfilingEnabled beside setJavaScriptProfilingEnabled + - Removed reload on each inspector test + - Renamed fast/inspector to fast/inspector-support in order not to trigger + inspector for those. + - Reimplemented timeline tests in order to get rid of reload there. + - Moved tests that don't require harness into the fast group. + + https://bugs.webkit.org/show_bug.cgi?id=31472 + + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_class_init): + (webkit_web_inspector_set_property): + (webkit_web_inspector_get_property): + +2009-11-13 Adam Roben <aroben@apple.com> + + Update for changes to FrameLoaderClient + + Fixes <http://webkit.org/b/31124> Tell the WebFrameLoadDelegate when + window objects in isolated worlds are cleared + + Reviewed by Dave Hyatt. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidClearWindowObjectInWorld): + * WebCoreSupport/FrameLoaderClientGtk.h: + Replaced windowObjectCleared with this function. Does nothing if the + passed-in world is not the mainThreadNormalWorld(). + +2009-11-12 Shinichiro Hamaji <hamaji@chromium.org> + + Reviewed by Darin Adler. + + externalRepresentation should take Frame as the argument + https://bugs.webkit.org/show_bug.cgi?id=31393 + + No new tests as this is just a refactoring. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_dump_render_tree): + +2009-11-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + Should not print javascript console messages to stdout + https://bugs.webkit.org/show_bug.cgi?id=31346 + + * webkit/webkitwebview.cpp: + (webkit_web_view_real_console_message): Print console messages to + stderr instead, using the recommended method (a g_log variant). + +2009-11-11 Philippe Normand <pnormand@igalia.com> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=30221 + [GTK] fails to load media embedded in iframe element + + The FrameLoader can show Media if the audio/video support is + enabled at compile time. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::canShowMIMEType): + +2009-11-10 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Jan Alonzo. + + [GTK] Remove WebSocket configuration from WebKitWebSettings + https://bugs.webkit.org/show_bug.cgi?id=31244 + + Remove non-functional enable-web-sockets property from WebKitWebSettings. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + +2009-11-09 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Jan Alonzo. + + [GTK] Expose Page::tabKeyCyclesThroughElements in the API + https://bugs.webkit.org/show_bug.cgi?id=30482 + + Expose Page::tabKeyCyclesThroughElements as a property of + WebKitWebSettings. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-11-04 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Jan Alonzo. + + [GTK] Enable DOM clipboard and drag-and-drop access + https://bugs.webkit.org/show_bug.cgi?id=30623 + + Move handling of target list to PasteboardHelperGtk. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::PasteboardHelperGtk::PasteboardHelperGtk): + (WebKit::PasteboardHelperGtk::~PasteboardHelperGtk): + (WebKit::PasteboardHelperGtk::fullTargetList): + * WebCoreSupport/PasteboardHelperGtk.h: + * webkit/webkitprivate.cpp: + (WebKit::pasteboardHelperInstance): + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + (webkit_web_view_init): + (webkit_web_view_get_copy_target_list): + (webkit_web_view_get_paste_target_list): + +2009-10-30 Evan Stade <estade@chromium.org> + + Reviewed by David Levin. + + Notify the chrome when the focused node has changed. + https://bugs.webkit.org/show_bug.cgi?id=30832 + + Added stub implementation for new ChromeClient function. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::focusedNodeChanged): + * WebCoreSupport/ChromeClientGtk.h: + +2009-10-29 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Trivial fix - move public API declaration into the + public subsection of the doc. + + * docs/webkitgtk-sections.txt: + +2009-10-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Jan Alonzo. + + [GTK] API to start inspector for a WebView + https://bugs.webkit.org/show_bug.cgi?id=22551 + + Provide a simple, coordinates-based API to start the inspector. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::createPage): Use files from the source + tree when running from the top of the source directory. + (WebKit::InspectorClient::localizedStringsURL): Ditto. + * webkit/webkitprivate.h: + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_inspect_coordinates): + (webkit_web_inspector_close): + (webkit_web_inspector_execute_script): + * webkit/webkitwebinspector.h: + +2009-10-27 Shinichiro Hamaji <hamaji@chromium.org> + + Reviewed by Darin Adler. + + Provide a way to get counter values with layoutTestContoller + https://bugs.webkit.org/show_bug.cgi?id=30555 + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_counter_value_for_element_by_id): + +2009-10-28 Joe Mason <jmason@rim.com> + + Reviewed by Adam Treat. + + Call the shared FrameLoader::defaultObjectContentType instead of + copying code into FrameLoaderClient::objectContentType. This causes no + behavioural change. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::objectContentType): + +2009-10-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + [Gtk] Extraneous object of ROLE_PANEL in hierarchy for entries + https://bugs.webkit.org/show_bug.cgi?id=25897 + + Update test to also check that entries implement the AtkText + interface. + + * tests/testatk.c: + (run_get_text_tests): + (test_webkit_atk_get_text_at_offset_forms): + (test_webkit_atk_get_text_at_offset): + (main): + +2009-10-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Update documentation control files for 1.1.16. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-10-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=30759 + [GTK] Should use WebKitNetworkResponse, and expose it + + WebKitDownload now uses our WebKitNetworkResponse instead of using + ResourceResponse directly. By exposing the response, like we do + with the request, we give our users the ability to look at the + response headers, status code, and so on, through the SoupMessage + object. + + * webkit/webkitdownload.cpp: + (webkit_download_dispose): + (webkit_download_finalize): + (webkit_download_get_property): + (webkit_download_set_property): + (webkit_download_class_init): + (webkit_download_get_network_response): + (webkit_download_set_response): + (webkit_download_get_total_size): + (webkit_download_get_progress): + (webkit_download_received_data): + * webkit/webkitdownload.h: + +2009-10-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for 1.1.16 release. + + * NEWS: + +2009-10-22 Gavin Barraclough <barraclough@apple.com> + + Reviewed by NOBODY (build fix). + Build fix following bug #30696. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_global_context): + +2009-10-22 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + m_webView should be private attribute of the EditorClientGtk. + https://bugs.webkit.org/show_bug.cgi?id=30664 + + * WebKit/gtk/WebCoreSupport/EditorClientGtk.h: + +2009-10-20 Fumitoshi Ukai <ukai@chromium.org> + + Reviewed by David Levin. + + Removed WebSocket runtime settings. + https://bugs.webkit.org/show_bug.cgi?id=29896 + + WebSocket runtime configuration is supported by chromium/v8 only. + + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-10-19 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Alexey Proskuryakov. + + [Gtk] ApplicationCacheStorage error while compiling WebKit/gtk/webkit/webkitapplicationcache.cpp + https://bugs.webkit.org/show_bug.cgi?id=30358 + + Guard calls to cacheStorage() with ENABLE(OFFLINE_WEB_APPLICATIONS). + + * webkit/webkitapplicationcache.cpp: + +2009-10-19 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Gustavo Noronha. + + Add a settings to allow DOM pastes to be performed. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-10-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Make WebKitHitTestResult actually appear in the + documentation index. + + * docs/webkitgtk-docs.sgml: + +2009-10-15 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Protect WebSocket calls in case the feature is not compiled in. + + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-10-15 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Gustavo Noronha. + + Add a settings to enable support for experimental Web Sockets. + Currently this comes in handy in layout tests. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-10-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + page transition may crash webkit + https://bugs.webkit.org/show_bug.cgi?id=29890 + + There are actually cases in which a resource may be asked using + webkit_web_view_get_resource after a new load has already been + started, so protect ourselves from crashes in this case. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFinishLoading): + * webkit/webkitwebview.cpp: + (webkit_web_view_get_resource): + +2009-10-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Remove unnecessary self-include. + + * webkit/webkitsecurityorigin.h: + +2009-10-12 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha. + + [GTK] Crash when right-clicking misspelled word + https://bugs.webkit.org/show_bug.cgi?id=29772 + + Make sure the dictionary exist before adding it to the list of + dictionaries. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::checkSpellingOfString): + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_set_property): + +2009-10-08 Adam Barth <abarth@webkit.org> + + Reviewed by Eric Seidel. + + Move executeScript from FrameLoader to ScriptController + https://bugs.webkit.org/show_bug.cgi?id=30200 + + Update API call. + + * webkit/webkitwebview.cpp: + (webkit_web_view_execute_script): + +2009-10-07 Xan Lopez <xlopez@igalia.com> + + Fix the GTK+ build. + + * webkit/webkitwebpolicydecision.cpp: + (webkit_web_policy_decision_use): + (webkit_web_policy_decision_ignore): + (webkit_web_policy_decision_download): + +2009-10-07 Adam Barth <abarth@webkit.org> + + Reviewed by Darin Adler. + + Factor PolicyChecker out of FrameLoader + https://bugs.webkit.org/show_bug.cgi?id=30155 + + Move the policy callback to the policy object. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSubmitForm): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + +2009-10-07 Martin Robinson <martin.james.robinson@gmail.com> + + [GTK] Segfault while testing fast/events/keydown-keypress-preventDefault.html + https://bugs.webkit.org/show_bug.cgi?id=30121 + + Clear previous preedit or pending composition before storing new ones. + This can happen when a WebView receives a native keydown event without + a matching keyup event or when preventDefault() is called on DOM keydown + events. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::setPendingComposition): + (WebKit::setPendingPreedit): + (WebKit::clearPendingIMData): + (WebKit::imContextCommitted): + (WebKit::imContextPreeditChanged): + +2009-10-06 Xan Lopez <xlopez@igalia.com> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=25526 + [Gtk] Additional support is needed for caret browsing + + Remove special cases for caret browsing, they are now handled in + cross-platform code. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): + +2009-10-06 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Timothy Hatcher. + + Web Inspector: close inspector client view on + InspectorController::close API call. + + In order to run batch web inspector layout tests (and not affect + subsequent tests) we should close inspector client's view upon + InspectorController::close API call. + + https://bugs.webkit.org/show_bug.cgi?id=30009 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::createPage): + +2009-10-06 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Xan Lopez. + + ASSERT executing the webhistory unittest in a debug build + https://bugs.webkit.org/show_bug.cgi?id=28947 + + We have to call g_object_new first to initialize webkit threading + before creating the KURL. + + * WebKit/gtk/webkit/webkitwebhistoryitem.cpp: + +2009-10-06 José Millán Soto <fid@gpul.org> + + Reviewed by Xan Lopez. + + Header files of WebKitGTK do not comply with WebKit coding style (Patch attached) + https://bugs.webkit.org/show_bug.cgi?id=30076 + + Solves various issues in header files. + + * WebCoreSupport/DocumentLoaderGtk.h: Added "headed guards" + * webkit/webkitdefines.h: + * webkit/webkitdownload.h: + * webkit/webkiterror.h: + * webkit/webkithittestresult.h: + * webkit/webkitnetworkrequest.h: + * webkit/webkitnetworkresponse.h: + * webkit/webkitprivate.h: + * webkit/webkitsecurityorigin.h: + * webkit/webkitsoupauthdialog.h: + * webkit/webkitversion.h.in: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebdatabase.h: + * webkit/webkitwebdatasource.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebinspector.h: + * webkit/webkitwebnavigationaction.h: + * webkit/webkitwebpolicydecision.h: + * webkit/webkitwebresource.h: + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.h: + * webkit/webkitwebwindowfeatures.h: + +2009-10-03 Adam Barth <abarth@webkit.org> + + More build fixing. + + * webkit/webkitwebview.cpp: + (webkit_web_view_go_back_or_forward): + (webkit_web_view_can_go_back_or_forward): + +2009-10-03 Adam Barth <abarth@webkit.org> + + Unreviewed build fix. + + * webkit/webkitwebview.cpp: + (webkit_web_view_go_back_or_forward): + +2009-10-03 Adam Barth <abarth@webkit.org> + + Reviewed by Sam Weinig. + + Factor PageController out of FrameLoader and Page + https://bugs.webkit.org/show_bug.cgi?id=30037 + + * webkit/webkitwebview.cpp: + (webkit_web_view_can_go_back_or_forward): + +2009-10-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Set the type for the fake event, otherwise the test ASSERTs in + debug builds. + + * tests/testhittestresult.c: + (load_status_cb): + +2009-10-01 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Xan Lopez. + + [GTK] GtkIMContext filtering interferes with DOM key events + https://bugs.webkit.org/show_bug.cgi?id=28733 + + Ensure that keyboard events filtered by the GtkIMContext still create + the proper DOM events. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::clearPendingIMData): + (WebKit::imContextCommitted): + (WebKit::imContextPreeditChanged): + (WebKit::EditorClient::shouldBeginEditing): + (WebKit::EditorClient::shouldEndEditing): + (WebKit::interpretEditorCommandKeyEvent): + (WebKit::handleCaretBrowsingKeyboardEvent): + (WebKit::EditorClient::handleKeyboardEvent): + (WebKit::EditorClient::handleInputMethodKeydown): + * tests/testkeyevents.c: Added. + (test_info_new): + (test_info_destroy): + (key_event_fixture_setup): + (key_event_fixture_teardown): + (key_press_event_cb): + (key_release_event_cb): + (load_status_cb): + (map_event_cb): + (test_keypress): + (main): + +2009-09-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Do not set a non-default parent window for child widgets. We are + just doing the same than the default path does, and on top of that + if the widget's window changes (for example, during DnD widgets + are usually unrealized/realized) the child widget will we left + pointing to a dead window. + + For examples of crashers caused by this see + https://bugzilla.gnome.org/show_bug.cgi?id=596397 and + https://bugzilla.gnome.org/show_bug.cgi?id=596398 + + * webkit/webkitwebview.cpp: + (webkit_web_view_container_add): + +2009-09-29 Xan Lopez <xlopez@igalia.com> + + Rubber-stamped by Eric Seidel. + + [Gtk] Crash when saving a password + https://bugs.webkit.org/show_bug.cgi?id=28070 + + Disconnect the 'got-headers' callback when we are done with + it. The signal can be emitted more than once if the message is + retransmitted, but each time that happens authData is created + again and a new callback connected, so we have to get rid of the + old one (which will crash because we free authData). + + * webkit/webkitsoupauthdialog.c: + (save_password_callback): + +2009-09-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Pop down the context menu when the page transitions to committed, + to avoid keeping a context menu out of context. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (destroy_menu_cb): + (webkit_web_view_forward_context_menu_event): + +2009-09-24 Jon Honeycutt <jhoneycutt@apple.com> + + Reviewed by Alice Liu. + + * webkit/webkitwebview.cpp: + (webkit_web_view_init): + Pass 0 for new Page constructor argument. + +2009-09-24 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha and Jan Alonzo. + [GTK] Add WEBKIT_LOAD_ERROR status + https://bugs.webkit.org/show_bug.cgi?id=29644 + + Add a new load-status enum value, WEBKIT_LOAD_FAILED, emitted when + there's an error during the load process. This is needed if we + want notify::load-status to be able to handle all situations, + since WEBKIT_LOAD_FINISHED is not emitted when there's an error + and we are lacking a notification of the load being stopped. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * tests/testloading.c: + (web_loading_fixture_setup): + (load_error_status_changed_cb): + (load_error_cb): + (test_loading_error): + (load_cancelled_cb): + (stop_load): + (load_cancelled_status_changed_cb): + (test_loading_cancelled): + (main): + * webkit/webkitwebframe.h: + +2009-09-24 Xan Lopez <xlopez@igalia.com> + + Revert r48697, since it broke key handling notification to GTK+. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::imContextPreeditChanged): + (WebKit::EditorClient::shouldBeginEditing): + (WebKit::EditorClient::shouldEndEditing): + (WebKit::interpretKeyEvent): + (WebKit::handleEditingKeyboardEvent): + (WebKit::EditorClient::handleKeyboardEvent): + (WebKit::EditorClient::handleInputMethodKeydown): + +2009-09-23 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Xan Lopez. + + [GTK] REGRESSION: BitmapImage::getGdkPixbuf fails for non-square images + https://bugs.webkit.org/show_bug.cgi?id=29654 + + Ensure that even when GTKSimpleIMContext filters non-IME keystrokes, + keyboard events are fired properly. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::clearPendingIMData): + (WebKit::imContextCommitted): + (WebKit::imContextPreeditChanged): + (WebKit::EditorClient::shouldBeginEditing): + (WebKit::EditorClient::shouldEndEditing): + (WebKit::interpretEditorCommandKeyEvent): + (WebKit::handleCaretBrowsingKeyboardEvent): + (WebKit::EditorClient::handleKeyboardEvent): + (WebKit::EditorClient::handleInputMethodKeydown): + +2009-09-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + [GTK] need to dump number of pending unload handlers + https://bugs.webkit.org/show_bug.cgi?id=29685 + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_pending_unload_event_count): New function to + satisfy DRT needs. + +2009-09-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + Minor reorganization to the patch landed in + http://trac.webkit.org/changeset/48670. Also move JSCore-1.0.gir + in the gtk directory as that's only useful to the Gtk port at the + moment. + + * JSCore-1.0.gir: Renamed from JSCore-1.0.gir. + +2009-09-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + Hardcode element positions at 0,0 so that we know where to + generate events to test WebKitHitTestResult. + + * tests/testhittestresult.c: + (load_status_cb): + (test_webkit_hit_test_result): + (main): + +2009-09-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + [GTK] WebKitHitTestResult is completely broken in gmail + https://bugs.webkit.org/show_bug.cgi?id=29527 + + We need to use the main or focused frame when doing the coordinate + transformation instead of always using the main frame. + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_hit_test_result): + +2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Update documentation control files to 1.1.15. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed docs build fix. Current CFLAGS and LIBS variables no + longer bring gthread in. + + * docs/GNUmakefile.am: + +2009-09-21 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update for release. + + * NEWS: + +2009-09-20 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Small documentation fix. + + * webkit/webkithittestresult.cpp: + +2009-09-18 Xan Lopez <xlopez@igalia.com> + + Build fix. + + Add missing file to the repository. + + * tests/testhittestresult.c: Added. + (test_info_new): + (test_info_destroy): + (hit_test_result_fixture_setup): + (hit_test_result_fixture_teardown): + (load_status_cb): + (test_webkit_hit_test_result): + (main): + +2009-09-18 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [Gtk] Unreviewed build fix. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::platformPageClient): + +2009-09-17 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Reviewed by Simon Hausmann. + + Make PlatformWindow return something else than PlatformWidget + https://bugs.webkit.org/show_bug.cgi?id=29085 + + Reflect the rename of platformWindow and it's return type. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::platformPageClient): + (WebKit::ChromeClient::runOpenPanel): + * WebCoreSupport/ChromeClientGtk.h: + * webkit/webkitprivate.cpp: + (currentToplevelCallback): + * webkit/webkitwebview.cpp: + (webkit_web_view_popup_menu_handler): + +2009-09-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + Document webkit_web_view_stop_loading. + + * webkit/webkitwebview.cpp: + +2009-09-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha and Jan Alonzo. + + [GTK] context menu overriding API is very limited + https://bugs.webkit.org/show_bug.cgi?id=27546 + + Add webkit_web_view_get_hit_test_result, a function to get a hit + test result from a GdkEventButton. Useful to let applications + decide between several actions on button press depending on what + is being pressed. + + * webkit/webkitwebview.cpp: + (webkit_web_view_stop_loading): + (documentPointForWindowPoint): + (webkit_web_view_get_hit_test_result): + * webkit/webkitwebview.h: + +2009-09-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha and Jan Alonzo. + + [GTK] context menu overriding API is very limited + https://bugs.webkit.org/show_bug.cgi?id=27546 + + Add WebKitHitTestResult, a wrapper over HitTestResult. It contains + context information about a point in the web page. + + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkithittestresult.cpp: Added. + (webkit_hit_test_result_finalize): + (webkit_hit_test_result_get_property): + (webkit_hit_test_result_set_property): + (webkit_hit_test_result_class_init): + (webkit_hit_test_result_init): + * webkit/webkithittestresult.h: Added. + * webkit/webkitprivate.cpp: + (WebKit::kit): + * webkit/webkitprivate.h: + +2009-09-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez and Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=29134 + [GTK] Add API to access sub resources + + Implement getting subresources, and improve testing of + main, and sub resources loading. + +2009-09-11 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + [GTK] Use gtk_style_set_background instead of gdk_window_set_background + https://bugs.webkit.org/show_bug.cgi?id=29173 + + Use gtk_style_set_background instead of gdk_window_set_background, + as suggested by the documentation. Also, use GTK_STATE_NORMAL + directly, since that's the default state of a GtkWidget. + + * webkit/webkitwebview.cpp: + (webkit_web_view_realize): + +2009-09-09 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Gustavo Noronha. + + [GTK] DumpRenderTree needs eventSender object and implementation + https://bugs.webkit.org/show_bug.cgi?id=25990 + + Creates a function that is accessible from the DumpRenderTree tool + and calls the layout method on the frame view. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_layout): + +2009-09-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=29044 + [GTK] Should update suggested-filename when the response is received + + Set suggested filename also when the response only comes after the + download has started. + + * webkit/webkitdownload.cpp: + (webkit_download_set_response): + (webkit_download_set_suggested_filename): + * webkit/webkitwebview.cpp: + (webkit_web_view_request_download): + +2009-09-08 Priit Laes <plaes@plaes.org> + + Reviewed by Gustavo Noronha. + + Fix up erroneus 'Since: @version@' tags in documentation. + + * webkit/webkitwebdatasource.cpp: + * webkit/webkitwebresource.cpp: + (webkit_web_resource_class_init): + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + * webkit/webkitwebwindowfeatures.cpp: + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Link new objects documents in the main document. + + * docs/webkitgtk-docs.sgml: + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Documentation control files updated for 1.1.14. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + What's new for 1.1.14. + + * NEWS: + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Use g_return_if_fail to check for the SoupURI creation, instead of + printing a custom warning. + + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_set_uri): + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=26854 + [GTK] Needs API to allow more control over outgoing requests + + Map the willSendRequest delegate to the 'resource-request-starting' + signal, allowing more control of the resources that are fetched. + + Mapping willSendRequest properly requires an appropriate Response + object, so we are introducing WebKitNetworkResponse, which works in a + way similar to WebKitNetworkRequest. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest): + (WebKit::FrameLoaderClient::dispatchDidFinishLoading): + (WebKit::FrameLoaderClient::dispatchDidFailLoading): + * tests/testnetworkresponse.c: Added. + (test_network_response_create_destroy): + (test_network_response_properties): + (main): + * tests/testwebresource.c: + (resource_request_starting_cb): + (load_finished_cb): + (test_web_resource_loading): + (main): + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitnetworkrequest.cpp: + * webkit/webkitnetworkresponse.cpp: Added. + (webkit_network_response_dispose): + (webkit_network_response_finalize): + (webkit_network_response_get_property): + (webkit_network_response_set_property): + (webkit_network_response_class_init): + (webkit_network_response_init): + (webkit_network_response_new_with_core_response): + (webkit_network_response_new): + (webkit_network_response_set_uri): + (webkit_network_response_get_uri): + (webkit_network_response_get_message): + * webkit/webkitnetworkresponse.h: Added. + * webkit/webkitprivate.cpp: + (WTF::SoupMessage): + (WTF::WebKitNetworkRequest): + (WTF::WebKitNetworkResponse): + (WTF::WebKitWebResource): + * webkit/webkitprivate.h: + * webkit/webkitwebresource.cpp: + (webkit_web_resource_cleanup): + (webkit_web_resource_finalize): + (webkit_web_resource_class_init): + (webkit_web_resource_set_property): + (webkit_web_resource_get_uri): + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + * webkitmarshal.list: + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=28979 + [GTK] Misc improvments to NetworkRequest + + Unref message in dispose, as it should be, not in finalize. + + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_dispose): + (webkit_network_request_finalize): + (webkit_network_request_class_init): + +2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=28979 + [GTK] Misc improvments to NetworkRequest + + Bring documentation up-to-date with reality regarding NetworkRequest. + + * webkit/webkitnetworkrequest.cpp: + +2009-09-07 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Make the auth dialog usable when libsoup does not have a + SoupPasswordManager, since it might go away in the next + development cycle. + + * webkit/webkitsoupauthdialog.c: + (response_callback): + (session_can_save_passwords): + (session_authenticate): +2009-09-06 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update the unitests to latest changes wrt scrollbar policy. + + * tests/testwindow.c: + (test_webkit_window_scrollbar_policy): + +2009-09-06 Martin Robinson <martin.james.robinson@gmail.com> + + Reviewed by Gustavo Noronha, Jan Alonzo and Xan Lopez. + + [Gtk] Expose a database API + https://bugs.webkit.org/show_bug.cgi?id=27899 + + Expose an HTML5 database API for GTK+. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::print): + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitsecurityorigin.cpp: Added. + (webkit_security_origin_finalize): + (webkit_security_origin_dispose): + (webkit_security_origin_set_property): + (webkit_security_origin_get_property): + (webkit_security_origins): + (webkit_security_origin_class_init): + (webkit_security_origin_init): + (webkit_security_origin_get_protocol): + (webkit_security_origin_get_host): + (webkit_security_origin_get_port): + (webkit_security_origin_get_web_database_usage): + (webkit_security_origin_get_web_database_quota): + (webkit_security_origin_set_web_database_quota): + (webkit_security_origin_get_all_web_databases): + (WebKit::kit): + (WebKit::core): + (webkit_security_origin_get_web_database): + * webkit/webkitsecurityorigin.h: Added. + * webkit/webkitwebdatabase.cpp: Added. + (webkit_web_database_finalize): + (webkit_web_database_dispose): + (webkit_web_database_set_property): + (webkit_web_database_get_property): + (webkit_web_database_class_init): + (webkit_web_database_init): + (webkit_web_database_set_security_origin): + (webkit_web_database_set_name): + (webkit_web_database_get_security_origin): + (webkit_web_database_get_name): + (webkit_web_database_get_display_name): + (webkit_web_database_get_expected_size): + (webkit_web_database_get_size): + (webkit_web_database_get_filename): + (webkit_web_database_remove): + (webkit_remove_all_web_databases): + (webkit_get_web_database_directory_path): + (webkit_set_web_database_directory_path): + (webkit_get_default_web_database_quota): + * webkit/webkitwebdatabase.h: Added. + * webkit/webkitwebframe.cpp: + (webkit_web_frame_new): + (webkit_web_frame_get_focused_accessible_element): + (webkit_web_frame_get_horizontal_scrollbar_policy): + * webkit/webkitwebframe.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-09-03 Adam Barth <abarth@webkit.org> + + Reviewed by eric@webkit.org. + + https://bugs.webkit.org/show_bug.cgi?id=24696 + + Stub implementations of mixed content methods of FrameLoaderClient. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didDisplayInsecureContent): + (WebKit::FrameLoaderClient::didRunInsecureContent): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-09-03 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Access private member variables directly instead of using the + accessor. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::windowObjectCleared): + +2009-09-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Remove bogus asserts that break Debug builds at runtime. + + * WebCoreSupport/DocumentLoaderGtk.cpp: + (WebKit::DocumentLoader::detachFromFrame): + (WebKit::DocumentLoader::decreaseLoadCount): + +2009-09-02 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez and Gustavo Noronha. + + [Gtk] Implement a WebDataSource for the gtk port + https://bugs.webkit.org/show_bug.cgi?id=24758 + + Add data source API getters to WebKitWebFrame. + Also add WebKitWebDataSource unit test. + + * tests/testwebdatasource.c: Added. + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + +2009-09-02 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez and Gustavo Noronha. + + [Gtk] Implement a WebDataSource for the gtk port + https://bugs.webkit.org/show_bug.cgi?id=24758 + + Subclass DocumentLoader for Gtk and implement it under the WebKit + namespace. Add WebKitWebDataSource implementation that closely + follows the mac implementation of the API. + + * WebCoreSupport/DocumentLoaderGtk.cpp: Added. + * WebCoreSupport/DocumentLoaderGtk.h: Added. + * webkit/webkitwebdatasource.cpp: Added. + * webkit/webkitwebdatasource.h: Added. + +2009-09-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Avoid causing unexpected issues with window sizing when sites + disable scrollbars completely. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::scrollbarsModeDidChange): + * tests/testwindow.c: + (test_webkit_window_scrollbar_policy): + * webkit/webkitwebframe.cpp: + (webkit_web_frame_class_init): + +2009-09-01 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez and Gustavo Noronha. + + [Gtk] Implement a WebDataSource for the gtk port + https://bugs.webkit.org/show_bug.cgi?id=24758 + + Implement WebKitWebResource for the resource-related API for + WebKitWebDataSource. + + * GNUmakefile.am: + +2009-09-01 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=28842 + [GTK] Do not emit extra FINISHED load-status signals + + Do not emit FINISHED load-status signals on our own, just rely on + WebCore for that. Avoids emitting FINISHED several times when we + fail to load a URI. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * tests/testloading.c: + (web_loading_fixture_setup): + (web_loading_fixture_teardown): + (load_finished_cb): + (status_changed_cb): + (test_loading_status): + (load_error_status_changed_cb): + (load_error_cb): + (test_loading_error): + (main): + * webkit/webkitwebframe.h: + +2009-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=28466 + When downloading a file, two GET requests are sent to the HTTP server + + Support reusing a connection that is already ongoing, instead of + cancelling the connection and creating another. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::download): + * webkit/webkitdownload.cpp: + (webkit_download_new_with_handle): + (webkit_download_start): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_request_download): + +2009-08-31 Alexey Proskuryakov <ap@apple.com> + + Gtk build fix. + + This is also a behavior fix, at least on debug builds - a caller of + webkit_web_history_item_new_with_data() could pass an URL that could cause an assertion + failure in KURL. + + * webkit/webkitwebhistoryitem.cpp: (webkit_web_history_item_new_with_data): Pass a null + KURL as base to parse properly. + +2009-08-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25889 + [GTK] scrollbar policy for main frame is not implementable + + Add properties and a signal to report scrollbar policy changes to + client code, and a default handler that does the right thing when + using GtkScrolledWindow. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::scrollbarsModeDidChange): + * WebCoreSupport/ChromeClientGtk.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_property): + (webkit_web_frame_class_init): + (webkit_web_frame_get_horizontal_scrollbar_policy): + (webkit_web_frame_get_vertical_scrollbar_policy): + * webkit/webkitwebframe.h: + * tests/testwindow.c: Added. + (load_finished_cb): + (test_webkit_window_scrollbar_policy): + (main): + +2009-08-28 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha and Xan Lopez. + + [Gtk] Add view source mode API + https://bugs.webkit.org/show_bug.cgi?id=28805 + + Implement setter and getter for "view source" mode. + + * webkit/webkitwebview.cpp: + (webkit_web_view_set_view_source_mode): + (webkit_web_frame_get_view_source_mode): + * webkit/webkitwebview.h: + +2009-08-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=28738 + Expose undo/redo functionality in WebKitWebView + + Expose undo/redo functionality in WebKitWebView, keeping the + default bindings as they were. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::): + * webkit/webkitwebview.cpp: + (webkit_web_view_real_undo): + (webkit_web_view_real_redo): + (webkit_web_view_class_init): + (webkit_web_view_can_undo): + (webkit_web_view_undo): + (webkit_web_view_can_redo): + (webkit_web_view_redo): + * webkit/webkitwebview.h: + +2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + News about the 1.1.13 release. + + * NEWS: + +2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Add new symbols, and an index of new symbols for the 1.1.13 + release. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-08-23 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix a couple of typos. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-08-23 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update editing-behavior property here too. + + * webkit/webkitwebview.cpp: + (webkit_web_view_settings_notify): + +2009-08-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Rubberstamped by Gustavo Noronha. + + Fix regressions introduced by http://trac.webkit.org/changeset/47690. + + Update the setting whenever the property gets set. + + * webkit/webkitwebview.cpp: + (webkit_web_view_settings_notify): + +2009-08-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [Gtk] API for disabling local file access to web URLs + https://bugs.webkit.org/show_bug.cgi?id=28663 + + Add a setting to enable or disable file access to web URLs. It's + disabled by default for security reasons. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + +2009-08-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=28154 + clicking below end of text in a textarea moves cursor to wrong position + + Expose the EditingBehavior setting and set it by default to Mac, + since that what matches the GTK+ default behavior. + + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + +2009-08-20 Aaron Boodman <aa@chromium.org> + + Hopefully the last speculative build for gtk. + + * webkit/webkitprivate.cpp: + (webkit_white_list_access_from_origin): + * webkit/webkitprivate.h: + +2009-08-20 David Levin <levin@chromium.org> + + Another speculative build for gtk. + + * webkit/webkitprivate.cpp: + (webkit_white_list_access_to_origin): + +2009-08-20 David Levin <levin@chromium.org> + + Speculative build for gtk. + + * webkit/webkitprivate.cpp: + (webkit_white_list_access_to_origin): + +2009-08-19 Aaron Boodman <aa@chromium.org> + + Fix build break. + + * webkit/webkitprivate.h: "WEBKIT API" -> "WEBKIT_API" + +2009-08-19 Aaron Boodman <aa@chromium.org> + + Reviewed by David Levin. + + https://bugs.webkit.org/show_bug.cgi?id=24853: Provide a way for WebKit clients to + specify a more granular policy for cross-origin XHR access. + + * webkit/webkitprivate.cpp: + (webkit_white_list_access_to_origin): Add API to manipulate origin access whitelists. + (webkit_reset_origin_access_white_lists): Ditto. + * webkit/webkitprivate.h: Ditto. + +2009-08-18 Xan Lopez <xlopez@igalia.com> + + Rubber-stamped by Holger Freyther. + + Remove an unneeded include. + + * WebCoreSupport/DragClientGtk.cpp: + +2009-08-18 Fumitoshi Ukai <ukai@chromium.org> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=28443 + Fix build break with gtk older than 2.14. + + WebKit gtk port requires gtk 2.10 or later, but DragClientGtk.cpp + uses gtk_widget_get_window that is introduced in 2.14. + + * WebCoreSupport/DragClientGtk.cpp: + define gtk_widget_get_window for gtk older than 2.14. + +2009-08-18 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Oliver Hunt. + + [Gtk] crash when closing page from javascript + https://bugs.webkit.org/show_bug.cgi?id=27439 + + Do not unref the WebView in ChromeClientGtk::closeWindowSoon + because (1) a create-web-view handler can return a NULL WebView, + (2) the created WebView is owned by its containing widget, and (3) + clients may not handle the close-web-view signal so this avoids + unreffing a WebView more than once. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::closeWindowSoon): + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-08-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=19360 + Frags on current page don't generate "navigation-requested" events + + Fix order of parameters for the creation of SubstituteData object, + so that normal data loads do not have an unreachable URL. Also + remove a confusion about the purpose of the last parameter. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_load_data): + +2009-08-18 Drew Wilson <atwilson@google.com> + + Reviewed by Eric Seidel. + + Need to extend DumpRenderTree to expose number of worker threads + https://bugs.webkit.org/show_bug.cgi?id=28292 + + * webkit/webkitprivate.h: + * webkit/webkitworkers.cpp: Added. + (webkit_worker_thread_count): + Exposed WebCore::WorkerThread::workerThreadCount() for the gtk version of DumpRenderTree. + +2009-08-18 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Fix the ATK unit test. + + We now support line boundaries in the get_text functions, so we + need to make sure the test has the layout we expect by giving it + enough space to fit in one line. + + * tests/testatk.c: + (test_webkit_atk_get_text_at_offset): + +2009-08-15 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Xan Lopez. + + Fix compiler warnings. + + * webkit/webkitwebview.cpp: + (clipboard_contents_received): + (webkit_web_view_drag_data_get): + +2009-08-14 Jiahua Huang <jhuangjiahua@gmail.com> + + Reviewed by Jan Alonzo. + + [gtk] Pasteboard/GtkClipboard can't handle the "text/html" target. + https://bugs.webkit.org/show_bug.cgi?id=27028 + + Add a function in WebKit::PasteboardHelperGtk that will return the + value of WEBKIT_WEB_VIEW_TARGET_INFO_HTML, + and WebCore::clipboard_get_contents_cb will use that. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::PasteboardHelperGtk::getWebViewTargetInfoHtml): + * WebCoreSupport/PasteboardHelperGtk.h: + +2009-08-14 Benjamin Otte <otte@gnome.org> + + Reviewed by Gustavo Noronha. + + Fix webkit_web_view_set_highlight_text_matches() so that highlighting + works properly in documents with frames. + + * webkit/webkitwebview.cpp: + (webkit_web_view_set_highlight_text_matches): + +2009-08-13 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Gustavo Noronha. + + [GTK] Drag and drop support + https://bugs.webkit.org/show_bug.cgi?id=23642 + + Adds support for drag actions in WebKitWebView and DragClient. + + Defines a support structure that can hold additional drag and drop data, + such as selection data or target IDs (infos) and can be passed through + clipboard requests. + + Implements DragClient functions that gather start position of the drag + and start the GTK drag. + + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::DragClient): + (WebKit::DragClient::willPerformDragSourceAction): + (WebKit::DragClient::startDrag): + (WebKit::DragClient::createDragImageForLink): A small style fix. + * WebCoreSupport/DragClientGtk.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_drag_end): + (clipboard_contents_received): GtkClipboard callback. + (webkit_web_view_drag_data_get): + (webkit_web_view_class_init): + (webkit_web_view_init): + * webkit/webkitwebview.h: Add GTK selection targets. + +2009-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed build fix. + + Last-minute change on the new soup API to use the keyring was not + reflected in our usage - the documentation says we should use + g_slist_free, and soup_auth_free_saved_users doesn't exist. + + * webkit/webkitsoupauthdialog.c: + (session_authenticate): + +2009-08-12 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + [GTK] Remove keyring optional features + https://bugs.webkit.org/show_bug.cgi?id=28173 + + Remove keyring support from our code and rely on libsoup to store + the authentication data if the user requests that support in their + application/library. + + * webkit/webkitsoupauthdialog.c: + (response_callback): + (show_auth_dialog): + (session_authenticate): + +2009-08-11 Benjamin Otte <otte@gnome.org> + + Reviewed by Xan Lopez. + + When instructed to print an out-of-range page, print an empty page + instead of crashing. + + * webkit/webkitwebframe.cpp: + (draw_page_callback): + +2009-08-10 Brady Eidson <beidson@apple.com> + + GTK build fix. + + * webkit/webkitdownload.cpp: + (webkit_download_get_suggested_filename): + +2009-08-08 Xan Lopez <xlopez@igalia.com> + + Roll out r46928, since it wasn't done in accordance with the + agreed naming. + + * ChangeLog: + + Remove the ChangeLog entry, since it was added at the bottom of + the file. + + * gdom/GdomDOMObject.h: Removed. + * gdom/GdomDOMObjectPrivate.h: Removed. + +2009-08-08 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [Gtk] Enable accessibility in Gtk DRT + https://bugs.webkit.org/show_bug.cgi?id=25989 + + Add SPI to get the focused accessible element to be used by DRT. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_focused_accessible_element): + +2009-07-30 Martin Robinson <mrobinson@appcelerator.com> + + Reviewed by Xan Lopez, Gustavo Noronha and Jan Alonzo. + + [GTK] new-window-policy-decision-requested provides no information about the target frame + https://bugs.webkit.org/show_bug.cgi?id=27792 + + Add frameName property to the WebKitWebNavigation object. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::getNavigationAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + * webkit/webkitwebnavigationaction.cpp: + (webkit_web_navigation_action_get_property): + (webkit_web_navigation_action_set_property): + (webkit_web_navigation_action_class_init): + (webkit_web_navigation_action_get_target_frame): + (webkit_web_navigation_action_set_target_frame): + * webkit/webkitwebnavigationaction.h: + +2009-07-29 Kevin McCullough <kmccullough@apple.com> + + Reviewed by Darin Adler. + + Added foundation work to allow a testing infrastructure for the Web + Inspector. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::inspectorWindowObjectCleared): + * WebCoreSupport/InspectorClientGtk.h: + +2009-07-29 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Eric Seidel and Xan Lopez. + + [Gtk] Enable http/tests/appcache tests + https://bugs.webkit.org/show_bug.cgi?id=27674 + + Add 'enable-offline-web-application-cache' WebSetting to enable + or disable the appcache. Also, Add appcache SPI for DRT to use. + + * webkit/webkitapplicationcache.cpp: Added. + (webkit_application_cache_set_maximum_size): + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-07-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Add information about the regression fix for WEBKIT_DEBUG. + + * NEWS: + +2009-07-28 Priit Laes <plaes@plaes.org> + + Reviewed by Xan Lopez. + + Fix mnemonics in the soup authentication dialog. + + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + +2009-07-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + * NEWS: update for 1.1.12 release. + +2009-07-27 Alexey Proskuryakov <ap@webkit.org> + + Build fix. + + * webkit/webkitwebframe.cpp: (webkit_gc_count_javascript_objects): Added a namespace to + SilenceAssertionsOnly. + +2009-07-27 Alexey Proskuryakov <ap@webkit.org> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=27735 + Give a helpful name to JSLock constructor argument + + * webkit/webkitwebframe.cpp: + (webkit_gc_count_javascript_objects): + +2009-07-24 Priit Laes <plaes@plaes.org> + + Reviewed by Xan Lopez. + + [Gtk] Password is saved into gnome-keyring even if auth. fails + https://bugs.webkit.org/show_bug.cgi?id=27560 + + Check authentication result and save password only when authentication + succeeds. + + * webkit/webkitsoupauthdialog.c: + (free_authData): + (response_callback): + (save_password_callback): + +2009-07-24 Andrei Popescu <andreip@google.com> + + Reviewed by Anders Carlsson. + + ApplicationCache should have size limit + https://bugs.webkit.org/show_bug.cgi?id=22700 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::reachedMaxAppCacheSize): + Adds empty implementation of reachedMaxAppCacheSize. + * WebCoreSupport/ChromeClientGtk.h: + +2009-07-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Eric Seidel. + + [Gtk] Add implementation of GCController for DRT + https://bugs.webkit.org/show_bug.cgi?id=27636 + + Add SPI for GCController to use. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_gc_collect_javascript_objects): + (webkit_gc_collect_javascript_objects_on_alternate_thread): + (webkit_gc_count_javascript_objects): + +2009-07-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Mark Rowe. + + Fix compiler warning. + + * tests/testwebsettings.c: + (test_webkit_web_settings_user_agent): + +2009-07-22 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Remove unused variables. + + * webkit/webkitwebview.cpp: + (webkit_web_view_grab_focus): + (webkit_web_view_focus_in_event): + +2009-07-21 Priit Laes <plaes@plaes.org> + + Reviewed by Holger Freyther. + + [GTK+] Missing accelerator in authentication dialog + https://bugs.webkit.org/show_bug.cgi?id=25509 + + Add accelerator to checkbox text. + + * WebKit/gtk/webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + +2009-07-21 Priit Laes <plaes@plaes.org> + + Reviewed by Holger Freyther. + + [GTK] http auth dialog pops up twice after a cancelled atempt + https://bugs.webkit.org/show_bug.cgi?id=24818 + + Remove workaround required for libsoup versions <=2.26.2 as we depend + on 2.27.4 now. + + * webkit/webkitsoupauthdialog.c: + (session_authenticate): + +2009-07-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + [GTK] Widget size negotiation + https://bugs.webkit.org/show_bug.cgi?id=17154 + + Implement proper size request for the WebView widget. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::contentsSizeChanged): + * webkit/webkitwebview.cpp: + (webkit_web_view_size_request): + (webkit_web_view_class_init): + +2009-07-16 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Jan Alonzo. + + [GTK+] Update the focus handling code. + + Change focus-in to always call setActive(true), call + FocusController::setFocusedFrame when no focused frame exists + other SelectionController::setActive. This is matching Windows + and Qt. + + On focus-out call FocusController::setActive(false) and + SelectionController::setFocued(false). This is matching Windows + and Qt as well. + + * webkit/webkitwebview.cpp: + (webkit_web_view_focus_in_event): + (webkit_web_view_focus_out_event): + +2009-07-16 Xiaomei Ji <xji@chromium.org> + + Reviewed by Dan Bernstein. + + This is the 2nd part of fixing "RTL: tooltip does not get its directionlity from its element's." + https://bugs.webkit.org/show_bug.cgi?id=24187 + + Add one extra parameter to the callee of HitTestResult::title() due to the signature change. + + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): Add direction as a parameter to the callee of HitTestResult::title(). + +2009-07-16 Xiaomei Ji <xji@chromium.org> + + Reviewed by Darin Adler. + + Fix tooltip does not get its directionality from its element's directionality. + https://bugs.webkit.org/show_bug.cgi?id=24187 + + Per mitz's suggestion in comment #6, while getting the plain-text + title, we also get the directionality of the title. How to handle + the directionality is up to clients. Clients could ignore it, + or use attribute or unicode control characters to display the title + as what they want. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::setToolTip): Add directionality as 2nd parameter to setToopTip() (without handling it yet). + * WebCoreSupport/ChromeClientGtk.h: Add directionality as 2nd parameter to setToolTip(). + +2009-07-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Jan Alonzo. + + Fix enable-xss-auditor property documentation, and default value + to match the fact that it is now enabled by default. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + +2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> + + Reviewed by Darin Adler. + + Change all Noncopyable inheriting visibility to public. + https://bugs.webkit.org/show_bug.cgi?id=27225 + + Change all Noncopyable inheriting visibility to public because + it is needed to the custom allocation framework (bug #20422). + + * webkit/webkitdownload.cpp: + +2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Late NEWS file for 1.1.11. + + * NEWS: + +2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Changes to the doc control files for 1.1.11. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Holger Freyther. + + Fix unit test to use the correct assumption that the SoupMessage + will be NULL when WebKitNetworkRequest is created from an URI. + + * tests/testnetworkrequest.c: + (test_network_request_create_destroy): + +2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org> + + <https://bugs.webkit.org/show_bug.cgi?id=27171> [Gtk] + REGRESSION (r45440): fails at fast/events/frame-programmatic-focus.html + + Reviewed by Gustavo Noronha. + + focus-in and focus-out events only get triggered when there's user + interaction, hence setFocused(bool) never gets called when + focusEvent is triggered when running the layout tests. The + solution seems to be to implement grab-focus too so we can call + setFocused(bool) when a widget has focus. + + * webkit/webkitwebview.cpp: + (webkit_web_view_grab_focus): + (webkit_web_view_focus_in_event): + (webkit_web_view_class_init): + +2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org> + + https://bugs.webkit.org/show_bug.cgi?id=26718 [Gtk] Add support for javascript windows for DRT + + Reviewed by Gustavo Noronha and Xan Lopez. + + Add API to support opening and closing of JavaScript windows automatically. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::closeWindowSoon): + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_real_close_web_view): + (webkit_web_view_class_init): + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + (webkit_web_view_set_group_name): + * webkit/webkitwebview.h: + +2009-07-12 Brent Fulgham <bfulgham@gmail.com> + + Speculative build fix after http://trac.webkit.org/changeset/45786. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::addMessageToConsole): + * WebCoreSupport/ChromeClientGtk.h: + +2009-07-09 Beth Dakin and Jon Honeycutt <bdakin@apple.com> + + Reviewed by Dave Hyatt. + + Make Widget RefCounted to fix: + + <rdar://problem/7038831> REGRESSION (TOT): In Mail, a crash occurs + at WebCore::Widget::afterMouseDown() after clicking To Do's close + box + <rdar://problem/6978804> WER #16: Repro Access Violation in + WebCore::PluginView::bindingInstance (1310178023) + -and- + <rdar://problem/6991251> WER #13: Crash in WebKit! + WebCore::PluginView::performRequest+203 (1311461169) + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createPlugin): + (WebKit::FrameLoaderClient::createJavaAppletWidget): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Jan Alonzo. + + Use soup's content sniffing + https://bugs.webkit.org/show_bug.cgi?id=26982 + + Add the new Content Sniffing feature provided by libsoup. + + * webkit/webkitprivate.cpp: + (webkit_init): + +2009-07-05 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Xan Lopez. + + Always initialize WebCore. + + It is possible that WebKitWebSettings and other classes get + constructed before the WebKitWebView. In this case WebCore is + not yet properly initialized. Add webkit_init to every class + that can be constructed by API users. + + * webkit/webkitdownload.cpp: + (webkit_download_class_init): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_class_init): + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_class_init): + * webkit/webkitwebhistoryitem.cpp: + (webkit_web_history_item_class_init): + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + * webkit/webkitwebwindowfeatures.cpp: + (webkit_web_window_features_class_init): + +2009-07-03 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez and Gustavo Noronha. + + Set user-agent from application + https://bugs.webkit.org/show_bug.cgi?id=17375 + + Add 'user-agent' setter/getter API to WebSettings. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::userAgent): + * WebCoreSupport/FrameLoaderClientGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitversion.h.in: + * webkit/webkitwebsettings.cpp: + (webkit_get_user_agent): + (webkit_web_settings_class_init): + (webkit_web_settings_finalize): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + (webkit_web_settings_get_user_agent): + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + +2009-07-02 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + Update the new boolean property in FocusController that keeps + track of whether or not the Page is focused. + + * webkit/webkitwebview.cpp: + (webkit_web_view_focus_in_event): + (webkit_web_view_focus_out_event): + +2009-06-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + Fix a couple of compiler warnings. + + * webkit/webkitwebnavigationaction.cpp: + * webkit/webkitwebview.cpp: + (webkit_web_view_real_move_cursor): + +2009-06-28 Xan Lopez <xlopez@igalia.com> + + Fix the GTK+ build. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::isSpeaking): + * WebCoreSupport/ContextMenuClientGtk.h: + +2009-06-24 Jiahua Huang <jhuangjiahua@gmail.com> + + Reviewed by Holger Freyther. + + [Gtk] Add Undo/Redo support to WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=26573 + + Implement EditorClient::undo and other interested funcs. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::registerCommandForUndo): + (WebKit::EditorClient::registerCommandForRedo): + (WebKit::EditorClient::clearUndoRedoOperations): + (WebKit::EditorClient::canUndo): + (WebKit::EditorClient::canRedo): + (WebKit::EditorClient::undo): + (WebKit::EditorClient::redo): + (WebKit::EditorClient::EditorClient): + * WebCoreSupport/EditorClientGtk.h: + +2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha and Xan Lopez. + + [Gtk] Implement DRT XSS auditor support + https://bugs.webkit.org/show_bug.cgi?id=26571 + + Add a setting "enable-xss-auditor" to enable this feature. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha and Xan Lopez. + + webkit_web_back_forward_list_add_item() should add a ref for the history item + https://bugs.webkit.org/show_bug.cgi?id=26517 + + Add a ref to the WebHistoryItem when it's added to the back + forward list through webkit_web_back_forward_list_add_item. + This keeps the history item alive and prevents pywebkitgtk from + crashing + + * tests/testwebbackforwardlist.c: + (test_webkit_web_history_item_lifetime): + (test_webkit_web_back_forward_list_order): + (test_webkit_web_back_forward_list_add_item): + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_add_item): + +2009-06-20 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Jan Alonzo. + + Initial test case for loading statuses. + + * tests/testloading.c: Added. + (load_finished_cb): + (status_changed_cb): + (test_loading_status): + (main): + +2009-06-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Jan Alonzo. + + Fix the ordering in which the new load status goes into the enum + to avoid ABI breakage. + + * webkit/webkitwebframe.h: + +2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez and Christian Dywan. + + Add a new load status to report that the first visually non-empty + layout has been done. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout): + * webkit/webkitwebframe.h: + +2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Fix parameters of navigation-policy-decision-requested callback, + to be correct in number and type + + * tests/testhttpbackend.c: + (navigation_policy_decision_requested_cb): + +2009-06-18 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::loadDone): + (WebKit::FrameLoaderClient::dispatchDidFinishLoad): + (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidFailLoad): Introduce the static + function loadDone to emit "load-done" and update the status and update + the relevent places. We missed some status notifications before. + +2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Be consistent in always using the term URI instead of URL in the + documentation of WebKitWebView signals. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-06-16 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Do not use g_assert_cmpint to test for NULL pointer, just + g_assert. + + * tests/testnetworkrequest.c: + (test_network_request_create_destroy): + +2009-06-15 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=26377 + [GTK] Confusion about range of 'progress' property + + Range for the progress property is 0.0 .. 1.0, don't multiply it + by 100 to make it a percentage. + + * webkit/webkitwebview.cpp: + (webkit_web_view_get_progress): + +2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Add new symbols list for 1.1.10 release. + + * docs/webkitgtk-docs.sgml: + +2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + Fix Since tags for the new uri and message properties. + + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_class_init): + +2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Adding new documented API to the generated + documentation. + + * docs/webkitgtk-sections.txt: + +2009-06-15 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Update NEWS for 1.1.10 release. + + * NEWS: + +2009-06-11 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + Add a test to perform an actual download. + + * tests/testdownload.c: + (navigation_policy_decision_requested_cb): + (notify_status_cb): + (download_requested_cb): + (test_webkit_download_perform): + (main): + +2009-06-11 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + Fix crash when downloading, caused by assuming SoupMessage would + be there. This change factors the logic required to create a + ResourceRequest from a WebKitNetworkRequest into a core() + function, like we have for some other classes. + + * webkit/webkitdownload.cpp: + (webkit_download_start): + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_load_request): + +2009-06-10 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + Make WebKitNetworkRequest a proper GObject, making URI and + SoupMessage properties. Also adding unit tests for creation and + destruction. + + * tests/testnetworkrequest.c: Added. + (test_network_request_create_destroy): + (test_network_request_properties): + (main): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_get_property): + (webkit_network_request_set_property): + (webkit_network_request_class_init): + (webkit_network_request_init): + (webkit_network_request_constructor): + (webkit_network_request_new_with_core_request): + (webkit_network_request_new): + (webkit_network_request_set_uri): + (webkit_network_request_get_uri): + * webkit/webkitnetworkrequest.h: + +2009-06-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + News for 1.1.9. + + * NEWS: + +2009-06-09 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha. + + Clear the frame name before we run each tests so we don't get + "someFloaString" or "3" in the target frame name. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_clear_main_frame_name): + + +2009-06-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=25415 + [GTK][ATK] Please implement support for get_text_at_offset + + Update test for new implementation (it fixes two bugs and adds + actual implementations for LINE boundaries). + + * tests/testatk.c: + (test_webkit_atk_get_text_at_offset): + +2009-06-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=26104 + [GTK] Make NetworkRequest a proper GObject and expose SoupMessage + + Refactor how SoupMessage is handled, so that our ResourceRequest + object doesn't have to store it as a member, which complicates + managing ResourceRequest's lifetvime. + + * tests/testhttpbackend.c: + (navigation_policy_decision_requested_cb): + (test_soup_message_lifetime): + * webkit/webkitnetworkrequest.cpp: + (WTF::SoupMessage): + (webkit_network_request_new_with_core_request): + +2009-06-08 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=26240 + [GTK] Try again button loses query strings + + Only trigger reload, when try again is clicked, this way we do not + lose the query strings, like we did when also triggering a form + submission. + + * resources/error.html: + +2009-06-06 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=26175 + [GTK] Download progress notification should be throttled, for the benefit of download managers + + Throttle notifications for the 'progress' property of the Download + object, and update documentation to note the fact that this is + being done, and how to get all notifications if you really care + about them. + + * webkit/webkitdownload.cpp: + (webkit_download_class_init): + (webkit_download_received_data): + +2009-05-29 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha. + + Fixed compile warning when comparing the different navigation types + + * webkit/webkitwebnavigationaction.cpp: + (webkit_web_navigation_action_class_init): + +2009-05-29 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=26075 + [GTK] Refactor key scrolling code + + After the scrolling changes in r44177 we can now use the + FrameView::scroll method like the other ports, keeping the magic + constants for the scrolling amounts inside WebCore proper. + + * webkit/webkitwebview.cpp: + (webkit_web_view_real_move_cursor): + +2009-05-29 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Jan Alonzo. + + Make NetworkRequest carry a reference of the SoupMessage used by + ResourceRequest, and use that to create new ResourceRequests where + needed, so that no information is lost while passing around + NetworkRequest objects. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + (WebKit::FrameLoaderClient::startDownload): + * webkit/webkitdownload.cpp: + (webkit_download_start): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_finalize): + (webkit_network_request_new_with_core_request): + (webkit_network_request_new): + (webkit_network_request_get_message): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_load_request): + +2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=26048 + navigation-policy-decision-requested documentation incomplete + + Fix documentation for all policy decision request signals, to + mention that an actual decision is expected when you return TRUE, + meaning that you handled the signal. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-05-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Mention the implementation of the new AtkText methods. + + * NEWS: + +2009-05-19 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo and Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=25415 + [GTK][ATK] Please implement support for get_text_at_offset + + New test file for ATK functionality. + + * tests/testatk.c: Added. + (bail_out): + (test_get_text_function): + (test_webkit_atk_get_text_at_offset): + (main): + +2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Document changes worth noting for 1.1.8. + + * NEWS: + +2009-05-27 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=26039 + [GTK] WebKitWebHistoryItem lifetime fixes + + Modify the management of history items by the BackForward list. + + Having the objects add themselves to a hash table with an extra + reference made impossible for the cleanup code in the dispose + method to be ever called in normal conditions, since dispose is + called before getting rid of the last reference, which the objects + were making to themselves. Get rid of this extra reference and + move the responsibility of the cleanup to the BackForward list + itself, which effectively owns the WebKitWebHistoryItems now. + + Also, update the tests to reflect this change. + + * tests/testwebbackforwardlist.c: + (test_webkit_web_history_item_lifetime): + (test_webkit_web_back_forward_list_order): + (test_webkit_web_back_forward_list_add_item): + * tests/testwebhistoryitem.c: + (web_history_item_fixture_setup): + (web_history_item_fixture_teardown): + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + (webkit_web_back_forward_list_dispose): + (webkit_web_back_forward_list_class_init): + * webkit/webkitwebhistoryitem.cpp: + (webkit_history_items): + (webkit_history_item_add): + (webkit_web_history_item_dispose): + (WebKit::kit): + +2009-05-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=26039 + [GTK] WebKitWebHistoryItem lifetime fixes + + Delete the BackForwardList before the Page, otherwise the references + to the WebKitWebHistoryItems will be gone. + + * webkit/webkitwebview.cpp: + (webkit_web_view_dispose): + +2009-05-27 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + Add comment to clarify why scrolling is done as it is and not with + gdk_window_scroll. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::scroll): + +2009-05-27 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Adding new symbols index for 1.1.8. + + * docs/webkitgtk-docs.sgml: + +2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Xan Lopez. + + Add a new signal called "create-plugin-widget" and emit it from + within the FrameLoaderClientGtk::createPlugin method. If a + GtkWidget gets returned it will be embedded as a WebCore::Widget + using the new GtkPluginWidget. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createPlugin): + * webkit/webkitwebview.cpp: + (webkit_signal_accumulator_object_handled): + (webkit_web_view_class_init): + * webkitmarshal.list: + +2009-05-24 Xan Lopez <xlopez@igalia.com> + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=25987 + [GTK] Clarify WebKitWebView::download-requested documentation + + Explain a bit why this signal is not emitted by default and offer + a common solution/setup for that issue. + + * webkit/webkitwebview.cpp: + (webkit_web_view_class_init): + +2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Rubber-stamped by Gustavo Noronha. + + Break the switch once private browsing is selected. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + +2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Gustavo Noronha and Xan Lopez. + + [Gtk] Enable database and localStorage support + https://bugs.webkit.org/show_bug.cgi?id=25629 + + Add settings to enable or disable database and localStorage + support and enable them by default. This allows databases to be + shown in the WebInspector as well as allow us to run the storage + layout tests. + + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + +2009-05-23 David Kilzer <ddkilzer@apple.com> + + Part 2 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr + + <https://bugs.webkit.org/show_bug.cgi?id=25495> + + Reviewed by Oliver Hunt. + + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::createHTMLParserQuirks): Return a + PassOwnPtr<> instead of a raw HTMLParserQuirks pointer. + +2009-05-22 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Jan Alonzo. + + Improve NetworkRequest documentation. + + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_class_init): + (webkit_network_request_init): + +2009-05-21 Xan Lopez <xlopez@igalia.com> + + Reviewed by Maciej Stachowiak. + + https://bugs.webkit.org/show_bug.cgi?id=24818 + [GTK] http auth dialog pops up twice after a cancelled atempt + + Workaround libsoup bug + http://bugzilla.gnome.org/show_bug.cgi?id=583462, which made + libsoup emit the 'authenticate' signal more often than it was + expected. + + We'll be able to remove this when we depend on libsoup > 2.26.2. + + * webkit/webkitsoupauthdialog.c: + (session_authenticate): + +2009-05-21 Darin Fisher <darin@chromium.org> + + Fix build bustage. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::getAutoCorrectSuggestionForMisspelledWord): Add stub for method. + * WebCoreSupport/EditorClientGtk.h: + +2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=25834 + + Make ChromeClient a interface again + + With recent additions to ChromeClient.h empty defaults were + added. This is bad for porters as these changes go unnoticed + and at runtime no notImplemented warning is logged and grepping + for notImplemented will not show anything. Change this Client + to be like the other Clients again and always have pure virtuals + (but for stuff inside #ifdef PLATFORM(MAC)). + + Update the various WebKit/* implementations to compile again. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::setCursor): + (WebKit::ChromeClient::requestGeolocationPermissionForFrame): + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::scrollRectIntoView): + +2009-05-19 Xan Lopez <xlopez@igalia.com> + + Reviewed by Jan Alonzo. + + Do not try to free enchant broker and dictionary if they do not + exist, those functions aren't NULL-safe. + + * webkit/webkitwebsettings.cpp: + (free_spell_checking_language): + +2009-05-15 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Jan Alonzo. + + Plug memory leak. + + * webkit/webkitwebsettings.cpp: + (free_spell_checking_language): + (webkit_web_settings_finalize): + (webkit_web_settings_set_property): + +2009-05-15 Fridrich Strba <fridrich.strba@bluewin.ch> + + Reviewed by Jan Alonzo. + + Converting filename to uri by concatenating strings is broken + on Windows. Use proper glib conversion functions. + + * webkit/webkitwebview.cpp: + (webkit_web_view_open): + * tests/testdownload.c: + (test_webkit_download_create): + +2009-05-13 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Do not handle KeyEvents with Ctrl or Alt modifiers that we + otherwise know nothing about. Otherwise shortcuts defined in the + WebView will never be executed. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::handleEditingKeyboardEvent): + +2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Add information about the SVG index bounds check committed in + r43590. + + * NEWS: + +2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Note changes since 1.1.6. + + * NEWS: + +2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Updated control file, and main file for the 1.1.7 + release. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25685 + [GTK] Middle click paste form the pasteboard + + For paste from middle button (button==2) we want to use + the GDK_PRIMARY_SELECTION. Implement the new getCurrentTarget + method in PasteboardHelperGtk by asking the WebView which + clipboard to use. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::PasteboardHelperGtk::getCurrentTarget): + * WebCoreSupport/PasteboardHelperGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_button_press_event): + (webkit_web_view_use_primary_for_paste): + +2009-05-12 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [Gtk] Various autotools build refactoring and fixes + https://bugs.webkit.org/show_bug.cgi?id=25286 + + Add glib-2.0 to the list of required package. + + * webkit.pc.in: + +2009-05-11 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=25697 + [GTK] Warnings building WebKit/gtk/tests/testwebframe.c + + * tests/testwebframe.c: + (test_webkit_web_frame_create_destroy): Declare webView as a GtkWidget* + to fix pointer type incompatibility warnings. + +2009-05-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Make the scan program call g_thread_init(NULL) in addition to + g_type_init(), so that it actually works. + + * docs/GNUmakefile.am: + +2009-05-08 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Unify scrolling code via adjustments and keys. Use the WebCore + defined constants, since that's what people are most used to at + this point. + + * ChangeLog: + * webkit/webkitwebview.cpp: + (webkit_web_view_real_move_cursor): + +2009-05-07 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): Add missing + call to notifyStatus in the committed case and a missing property notify. + +2009-05-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=24786 + WebKitDownload sometimes suggests peculiar filenames + + When a download is requested by an ongoing request, use the already + provided response to set the suggested filename for the WebKitDownload + object, if available. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::download): + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_set_property): + (_WebKitDownloadPrivate::webkit_download_get_suggested_filename): + (_WebKitDownloadPrivate::webkit_download_set_suggested_filename): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + +2009-05-06 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + GTK+ API implementation files have bogus extern "C" entries + https://bugs.webkit.org/show_bug.cgi?id=24322 + + Remove bogus extern "C" from the source files. + + * webkit/webkitdownload.cpp: + (DownloadClient::cannotShowURL): + * webkit/webkiterror.cpp: + (webkit_plugin_error_quark): + * webkit/webkitnetworkrequest.cpp: + (webkit_network_request_get_uri): + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitversion.cpp: + (webkit_micro_version): + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebframe.cpp: + (webkit_web_frame_get_load_status): + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebinspector.cpp: + (webkit_web_inspector_set_inspector_client): + * webkit/webkitwebnavigationaction.cpp: + (webkit_web_navigation_action_get_modifier_state): + * webkit/webkitwebpolicydecision.cpp: + (webkit_web_policy_decision_cancel): + * webkit/webkitwebsettings.cpp: + (webkit_web_settings_get_spell_languages): + * webkit/webkitwebview.cpp: + * webkit/webkitwebwindowfeatures.cpp: + (webkit_web_window_features_equal): + +2009-05-06 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + Misc fixes to InspectorClientGtk. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::createPage): use g_filename_to_uri to + get the URI and use web_view_load_uri instead of the deprecated + web_view_open method for loading the URI. + (WebKit::InspectorClient::localizedStringsURL): implement. + +2009-05-05 Ben Murdoch <benm@google.com> + + Reviewed by Eric Seidel. + + Add #if ENABLE(DATABASE) guards around database code so toggling ENABLE_DATABASE off does not break builds. + https://bugs.webkit.org/show_bug.cgi?id=24776 + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::exceededDatabaseQuota): + * WebCoreSupport/ChromeClientGtk.h: + +2009-05-06 Christian Dywan <christian@twotoasts.de> + + Reviewed by Gustavo Noronha. + + http://bugs.webkit.org/show_bug.cgi?id=17066 + [GTK] Improve frameloader signals + + Implement load-status and progress properties on the view, as well as + load-status on the frame. This supersedes the different load signals + load-progress-changed, load-committed, load-done, load-started and + load-finished which are not only misnamed but broken by design. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::notifyStatus): + (WebKit::FrameLoaderClient::postProgressStartedNotification): + (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification): + (WebKit::FrameLoaderClient::dispatchDidFinishLoad): + (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2009-05-05 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + Fix memory leaks. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::checkSpellingOfString): + +2009-05-02 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25466 + WebKitGtk+ 1.1.6 prints weird error messages in Liferea + + Use strlen instead of g_utf8_strlen when calculating the size of + the data that is being given to webkit_web_frame_load_string to be + loaded, so that we don't miss any of the content. + + * webkit/webkitwebframe.cpp: + +2009-05-01 Dimitri Glazkov <dglazkov@chromium.org> + + Unreviewed, bulid fix. + + Fix mis-applied patch. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): + +2009-05-01 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Timothy Hatcher. + + Add a FrameLoaderClient callback for the ResourceRetrievedByXMLHttpRequest. + + https://bugs.webkit.org/show_bug.cgi?id=25347 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-04-30 David Kilzer <ddkilzer@apple.com> + + Provide a mechanism to create a quirks delegate for HTMLParser + + Reviewed by David Hyatt. + + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::createHTMLParserQuirks): Added. The + default implementation of this factory method returns 0. + +2009-04-30 Pavel Feldman <pfeldman@chromium.org> + + Reviewed by Dimitri Glazkov. + + https://bugs.webkit.org/show_bug.cgi?id=25342 + Add MessageSource and MessageLevel parameters to the ChromeClient::addMessageToConsole. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::addMessageToConsole): + * WebCoreSupport/ChromeClientGtk.h: + +2009-04-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Update gtk-doc control and base sgml files for 1.1.6. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-04-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Updated with news for the 1.1.6 release. + + * NEWS: + +2009-04-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Leave a bit of space from the previous page when advacing a whole + page. This matches the behavior of our scrollbar scrolling code + and is just nicer in general. + + * webkit/webkitwebview.cpp: + +2009-04-28 Xan Lopez <xlopez@igalia.com> + + Unreviewed: committed a few bits by mistake, remove them. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::handleEditingKeyboardEvent): + +2009-04-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=16135 + [GTK] Support caret browsing + + Refactor keyboard event handling to work properly under caret + browsing mode. Most of the code comes from the Windows port. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::): + (WebKit::interpretKeyEvent): + (WebKit::handleEditingKeyboardEvent): + (WebKit::EditorClient::handleKeyboardEvent): + +2009-04-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=16135 + [GTK] Support caret browsing + + Based on a patch by Alp Toker. + + Add enable-caret-browsing setting to WebKitWebView. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + +2009-04-27 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25409 + [GTK] incorrectly fallsback on cancellation + + Check whether we should fallback also on didFailLoad, so that we + don't get error pages showing up in parts of the content of some + sites because of, for instance, location changes. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + +2009-04-27 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25409 + [GTK] incorrectly fallsback on cancellation + + Correctly handle cancellation and frame loading interruption + caused by policy change. This also fixes + fast/frames/location-change.html. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::shouldFallBack): + +2009-04-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Mark Rowe. + + Plug memory leak. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + +2009-04-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=25391 + G_SIGNAL_ACTION flag in WebKitWebView signals + + Most of the signals in WebKitGTK+ have the G_SIGNAL_ACTION flag, + but I don't think this makes sense. The flag is meant for those + signals that can be emitted by the user to trigger some action in + the view, as if it were a normal API, which is not the case for + most of them. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_class_init): + * webkit/webkitwebframe.cpp: + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + * webkit/webkitwebview.cpp: + +2009-04-26 Xan Lopez <xlopez@igalia.com> + + Unreviewed, actually apply the right patch. + + * webkit/webkitwebview.cpp: + (webkit_web_view_move_cursor): + +2009-04-26 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + Pass a variable to hold the return value of the 'move-cursor' + signal, otherwise a crash can happen. + + * webkit/webkitwebview.cpp: + (webkit_web_view_move_cursor): + +2009-04-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=24786 + WebKitDownload sometimes suggests peculiar filenames + + Refactor the emission of the download-requested signal so that we + have less code duplication. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::downloadURL): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::startDownload): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + +2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [GTK] Error reporting + https://bugs.webkit.org/show_bug.cgi?id=18344 + + Update FrameLoad errors to use WebKitErrors. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::cancelledError): + (WebKit::FrameLoaderClient::blockedError): + (WebKit::FrameLoaderClient::cannotShowURLError): + (WebKit::FrameLoaderClient::interruptForPolicyChangeError): + (WebKit::FrameLoaderClient::cannotShowMIMETypeError): + (WebKit::FrameLoaderClient::fileDoesNotExistError): + (WebKit::FrameLoaderClient::pluginWillHandleLoadError): + (WebKit::FrameLoaderClient::shouldFallBack): + * webkit/webkiterror.h: Added. + * webkit/webkiterror.cpp: Added. + +2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [GTK] Error reporting + https://bugs.webkit.org/show_bug.cgi?id=18344 + + Display a default error page for load errors. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * resources/error.html: Added. + +2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [GTK] Error reporting + https://bugs.webkit.org/show_bug.cgi?id=18344 + + Add a WebKitWebFrame API to load alternate content for unreachable URLs. + Also add a new signal "load-error" for handling load errors. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::dispatchDidFailLoading): + (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebview.cpp: + +2009-04-24 Jan Michael Alonzo <jmalonzo@webkit.org> + + Rubber-stamped by Gustavo Noronha. + + Fix braces to comply with style guidelines. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::PasteboardHelperGtk::getClipboard): + (WebKit::PasteboardHelperGtk::getCopyTargetList): + (WebKit::PasteboardHelperGtk::getPasteTargetList): + +2009-04-24 Sergio García-Cuevas <sergio_gcg@telefonica.net> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=17267 + [GTK] Primary selection/clipboard support + + Add a method for getting the primary selection. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + (WebKit::PasteboardHelperGtk::getPrimary): + * WebCoreSupport/PasteboardHelperGtk.h: + +2009-04-24 Johan Bilien <jobi@via.ecp.fr> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=25373 + Popup menu has the wrong size when popped up near the edge + of the screen + + * webkit/webkitwebview.cpp: + (webkit_web_view_forward_context_menu_event): Let GTK place + the popup menu instead of trying to do better and failing + +2009-04-24 Christian Dywan <christian@twotoasts.de> + + Rubber-stamped by Gustavo Noronha. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): Reword the + description of the enable-spell-checking property and correct the + mentioning of the default language used. + +2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15616 + [GTK] Add spell checking + + Implement EditorClient::ignoreWordInSpellDocument, + EditorClient::learnWord and EditorClient::getGuessesForWord. This + enables the corresponding user actions. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::ignoreWordInSpellDocument): + (WebKit::EditorClient::learnWord): + (WebKit::EditorClient::getGuessesForWord): + +2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15616 + [GTK] Add spell checking + + Implement EditorClient::checkSpellingOfString; enabling spell checking + to actually happen, this is the basis for other spelling functions. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::checkSpellingOfString): + +2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15616 + [GTK] Add spell checking + + Add spell-checking-languages property to WebKitWebSettings. + + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_finalize): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_spell_languages): + +2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=15616 + [GTK] Add spell checking + + Add enable-spell-checking property to WebKitWebSettings and implement + EditorClient::isContinuousSpellCheckingEnabled and + EditorClient::toggleContinuousSpellChecking to allow the UI to + enable check as you type spell checking. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::isContinuousSpellCheckingEnabled): + (WebKit::EditorClient::toggleContinuousSpellChecking): + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + +2009-04-21 Xan Lopez <xlopez@igalia.com> + + Reviewed by Gustavo Noronha. + + https://bugs.webkit.org/show_bug.cgi?id=21546 + [GTK] ATK accessibility enhancements + + Implement window<->screen coordinate transformation functions. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::widgetScreenPosition): + (WebKit::ChromeClient::windowToScreen): + (WebKit::ChromeClient::screenToWindow): + +2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + https://bugs.webkit.org/show_bug.cgi?id=24786 + WebKitDownload sometimes suggests peculiar filenames + + Remove query and ref from the URI that is to be downloaded when + using it to provide a file name suggestion. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_set_property): + +2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Xan Lopez. + + Handle the case when the plugin view is destroyed during + didReceiveResponse, to avoid crashing. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::committedLoad): + +2009-04-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=25251 + Crash when frame creation removes it from the parent + + This brings us up-to-date with the expectations of sub-frame + creation, following what Mac has done. It fixes crashes when + calling init on the child frame removes it from the page. + + This makes the following test pass instead of crash: + + fast/loader/frame-creation-removal.html + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2009-04-16 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=25042 + destroying webview widget directly causes crash. + + * tests/testwebframe.c: + (test_webkit_web_frame_create_destroy): Add a test case for destroying + a web view shortly after packing it in a window. + +2009-04-16 Xan Lopez <xlopez@igalia.com> + + Reviewed by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=25241 + Remove superfluous NotImplemented.h includes. + + * webkit/webkitprivate.cpp: + +2009-04-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Update gtk-doc control and base sgml files for 1.1.5. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-04-14 Xan Lopez <xlopez@igalia.com> + + * NEWS: updated for 1.1.5 release. + +2009-04-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22898 + [GTK] need proper API for printing + + Added simple printing unit tests. + + * tests/testwebframe.c: + (print_requested_cb): + (print_timeout): + (test_webkit_web_frame_printing): + (main): + +2009-04-13 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22898 + [GTK] need proper API for printing + + Implement proper printing API, using the GTK+ printing API. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::print): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebview.cpp: + +2009-04-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25124 + [GTK] many strings still missing translation calls + + Mark the missing strings for translation. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_cancel): + * webkit/webkitsoupauthdialog.c: + (show_auth_dialog): + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init): + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + * webkit/webkitwebnavigationaction.cpp: + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init): + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + +2009-04-08 Alejandro Piñeiro <apinheiro@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=21546 + [GTK] ATK accessibility enhancements + + Use getOrCreate instead of just get, as we need to actually create + the wrapper object the first time this function is called. + + * webkit/webkitwebview.cpp: + +2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Sam Weinig. + + https://bugs.webkit.org/show_bug.cgi?id=20575 + No localization in WebKitGtk + + Implemented localization support for WebKitGTK+. + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.cpp: + * po/POTFILES: Added. + * po/README: Added. + * po/webkit.pot: Added. + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_class_init): + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitwebframe.cpp: + +2009-04-05 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25042 + destroying webview widget directly causes crash. + + Do not connect the WebView to its own screen-changed signal, set a + default handler instead. + + * webkit/webkitwebview.cpp: + +2009-04-05 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25042 + destroying webview widget directly causes crash. + + GtkWidget::screen-changed can be emitted when a widget is being + destroyed, protect against it. + + * webkit/webkitwebview.cpp: + +2009-04-05 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [Gtk] Implement LayoutTestControllerGtk::setPrivateBrowsingEnabled + https://bugs.webkit.org/show_bug.cgi?id=24487 + + Updated documentation and put more information about the + private-browsing setting for WebKitGtk. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + +2009-04-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + Remove pre-processor checks for GTK+ >= 2.10, since we now require + at least that version. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::clipboard_clear_contents_cb): + (WebKit::EditorClient::respondToChangedSelection): + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2009-04-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24844 + Unit test WebKitDownload + + Extra checks to avoid crashing and a critical message when + property accessor functions are called before the download is + started. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_get_progress): + (_WebKitDownloadPrivate::webkit_download_get_elapsed_time): + +2009-04-01 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + * tests/testdownload.c: Added. + (test_webkit_download_create): + (main): Add an initial unit test for downloading. + +2009-04-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed typo fixes, and naming normalization in the + documentation. + + * docs/webkitenvironment.xml: + * webkit/webkitwebview.cpp: + +2009-03-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + Updated gtk-doc configuration files for the 1.1.1, 1.1.2, 1.1.3, + and 1.1.4 versions of WebKitGTK+. + + * docs/webkitgtk-docs.sgml: + * docs/webkitgtk-sections.txt: + +2009-03-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=17045 + [GTK] Documentation + + Added header documentation for WebKitWebNavigationAction and + WebKitWebPolicyDecision. + + Added missing documentation pieces for WebKitSoupAuthDialog, + WebKitDownload and WebKitWebPolicyDecision. + + Wrote a section about using the WEBKIT_DEBUG environment variable. + + * docs/GNUmakefile.am: + * docs/webkitenvironment.xml: Added. + * docs/webkitgtk-docs.sgml: + * webkit/webkitdownload.cpp: + * webkit/webkitsoupauthdialog.c: + * webkit/webkitwebnavigationaction.cpp: + * webkit/webkitwebpolicydecision.cpp: + +2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + Integrate gtk-doc into the Gtk+ buildsystem. + + Based on original work by Holger Freyther. + + Integrate gtk-doc into our buildsystem. We are forced to + use recursive make for gtk-doc itself as the to be installed + gtk-doc.make (done by gtkdocize) is not working in a non + recursive environment. + + The documentation can only be generated when srcdir == builddir. + In all other cases the generated files will not be found. This + limitation can be found in pango and gtk+ as well. There is no + easy way around. The resulting html documentation will be saved + in the srcdir as well. + + * docs/GNUmakefile.am: Added. + * docs/version.xml.in: Added. + * docs/webkitgtk-docs.sgml: + +2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Documenting what changed since the 1.1.3 release, in + the GTK+ port. + + * NEWS: + +2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed. Add information on the bug-fix-only 1.1.3 release. + + * NEWS: + +2009-03-30 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=24878 + [GTK] Use GtkBinding system to handle key events in WebView + + Use GtkBinding system for key events in WebKitWebView. Allows the + user to reconfigure the bindings and fixes a bunch of bugs along + the way (we were not checking modifier keys in most actions). + + * webkit/webkitwebview.cpp: + (webkit_web_view_move_cursor): + * webkit/webkitwebview.h: + * webkitmarshal.list: + +2009-03-28 Xan Lopez <xlopez@igalia.com> + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=24790 + [GTK] webkitsoupauthdialog.h lacks WEBKIT_API before function + + Set the right visibility to the WebKitSoupAuthDialog get_type + function. + + * webkit/webkitsoupauthdialog.h: + +2009-03-28 Jan Michael Alonzo <jmalonzo@webkit.org> + + Gtk build fix. Not reviewed. + + FrameLoader::loadURL and FrameLoader::detachChildren went private + per changes in http://trac.webkit.org/changeset/42055. Follow + Mac's behaviour and use FrameLoader::loadURLIntoChildFrame for + loadURL and FrameLoader::detachParent for detachChildrem. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + * webkit/webkitwebview.cpp: + +2009-03-25 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=15793 + [GTK] tooltip position doesn't update when hovering consecutive links + + Work-around tooltips not updating their location when the elements + are consecutive, by clearing the tooltip when handling + mouseDidMoveOverElement. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + +2009-03-23 Alejandro Garcia Castro <alex@igalia.com> + + Reviewed by Holger Freyther. + + [Gtk] Current API does not allow us to open target="_blank" links + in new tabs instead of windows + https://bugs.webkit.org/show_bug.cgi?id=23932 + + Added a signal to the API (new-window-policy-decision-requested) + that allows the browser to decide the policy for the new window + request, if the signal is not handled we open the new window as + usual. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::getNavigationAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + * webkit/webkitwebview.cpp: + +2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com> + + Not reviewed. Fix style issues with my previous commit (r41866) as + suggested by Holger in https://bugs.webkit.org/show_bug.cgi?id=24493 + + * tests/testwebhistoryitem.c: + (test_webkit_web_history_item_get_data): + (test_webkit_web_history_item_alternate_title): + +2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com> + + Reviewed by Holger Freyther. + + [GTK] Misc patches for WebKitWebHistoryItem + https://bugs.webkit.org/show_bug.cgi?id=24493 + + Add unit test for WebKitWebHistoryItem + + * tests/testwebhistoryitem.c: Added. + (web_history_item_fixture_setup): + (web_history_item_fixture_teardown): + (test_webkit_web_history_item_get_data): + (test_webkit_web_history_item_alternate_title): + (main): + +2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com> + + Reviewed by Holger Freyther. + + Separate gtk unit tests + https://bugs.webkit.org/show_bug.cgi?id=24039 + + Split the current single-file unit test to make it more + modularized and manageable in the future as more unit tests are + written. + + * tests/main.c: Removed. + * tests/testwebbackforwardlist.c: Copied from WebKit/gtk/tests/main.c. + (main): + * tests/testwebframe.c: Copied from WebKit/gtk/tests/main.c. + (main): + +2009-03-16 Christian Dywan <christian@twotoasts.de> + + Reviewed by Adam Roben. + + [gtk] API implementation: url and title + http://bugs.webkit.org/show_bug.cgi?id=14807 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage): + (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: Implement "title" and "uri" properties as well + as according functions. "uri" always reflects the current location + including navigation inside the same page. title-changed is deprecated. + +2009-03-15 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Anders Carlsson. + + Fix default policy decision to be ignore, on MIME checks, if + WebKit doesn't know how to handle the MIME type. The documentation + is already correct, and this was an oversight when the policy + decision code was first committed. Since 1.1.2 will be the first + release to support download, there is no practical change in + behavior. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + +2009-03-15 Xan Lopez <xlopez@igalia.com> + + * NEWS: update for 1.1.2. + +2009-03-14 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [GTK] use of confirm dialog (yes/no) causes segfault + https://bugs.webkit.org/show_bug.cgi?id=20940 + + Change the script-confirm marshaller from OBJECT,STRING,BOOLEAN to + OBJECT,STRING,POINTER + + * webkit/webkitwebview.cpp: + * webkitmarshal.list: + +2009-03-12 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24553 + [GTK] Improvements to WebKitDownload + + Rename 'state' to 'status' to match the naming in the frame + loader rework that we plan to land soonish, and make it a + property, for the same reason. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::): + (_WebKitDownloadPrivate::webkit_download_finalize): + (_WebKitDownloadPrivate::webkit_download_get_property): + (_WebKitDownloadPrivate::webkit_download_set_property): + (_WebKitDownloadPrivate::webkit_download_class_init): + (_WebKitDownloadPrivate::webkit_download_init): + (_WebKitDownloadPrivate::webkit_download_start): + (_WebKitDownloadPrivate::webkit_download_cancel): + (_WebKitDownloadPrivate::webkit_download_set_destination_uri): + (_WebKitDownloadPrivate::webkit_download_get_status): + (_WebKitDownloadPrivate::webkit_download_set_status): + (_WebKitDownloadPrivate::webkit_download_received_data): + (_WebKitDownloadPrivate::webkit_download_finished_loading): + (_WebKitDownloadPrivate::webkit_download_error): + * webkit/webkitdownload.h: + +2009-03-12 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24553 + [GTK] Improvements to WebKitDownload + + Improved documentation for the download-requested signal, to make + its usage clear. + + * webkit/webkitwebview.cpp: + +2009-03-12 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=24541 + Scrolling with home and end keys not always works + + Also make page up and page down keys be handled by the webview key + event code, so that they also work in cases where the GTK+ + scrollbars don't handle them directly, like in the bugzill's patch + review page. + + * webkit/webkitwebview.cpp: + +2009-03-12 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=24541 + Scrolling with home and end keys not always works + + Make home and end keys behave more consistently for scrolling the + view. + + * webkit/webkitwebview.cpp: + +2009-03-12 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=24254 + [GTK] spacebar doesn't scroll down + + Make spacebar and shift+spacebar scroll like page up and down + respectively would. + + * webkit/webkitwebview.cpp: + +2009-03-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=24493 + [GTK] Misc patches for WebKitWebHistoryItem + + Only run code in dispose once per instance. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + +2009-03-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=24493 + [GTK] Misc patches for WebKitWebHistoryItem + + Call deref() on our internal HistoryItem on dispose, as we always + acquire it with a releaseRef() call to a PassRefPtr, which passes + ownership. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + +2009-03-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=24493 + [GTK] Misc patches for WebKitWebHistoryItem + + return foo? foo : NULL == return foo + + * webkit/webkitwebhistoryitem.cpp: + (WebKit::core): + +2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + Gtk] Implement LayoutTestControllerGtk::setPrivateBrowsingEnabled + https://bugs.webkit.org/show_bug.cgi?id=24487 + + Add private browsing option "enable-private-browsing" to WebKitWebSettings. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + +2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [GTK] BackForward history leak? + https://bugs.webkit.org/show_bug.cgi?id=19528 + + Don't ref the history items when returning the back/forward list + Added test_webkit_web_history_item_lifetime test case for this. + + * tests/main.c: + (test_webkit_web_history_item_lifetime): + (test_webkit_web_back_forward_list_order): Style fix. + (test_webkit_web_back_forward_list_add_item): Style fix. + (main): + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit): + +2009-03-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24493 + [GTK] Misc patches for WebKitWebHistoryItem + + Use g_hash_table_new_full so we can save the manual unref on the + values when removing them from the table. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + +2009-03-10 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24493 + [GTK] Misc patches for WebKitWebHistoryItem + + Use 'if (foo)' instead of 'if (foo != NULL)', per coding style + guidelines. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_history_item_remove): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_target): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_children): + +2009-03-10 Xan Lopez <xlopez@igalia.com> + + Reviewed by Alexey Proskuryakov. + + Correct return value to false instead of NULL. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item): + +2009-03-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Mark Rowe. + + Add javascript-profiling-enabled property and implement it. This + will enable/disable the profiler on the InstpectorController. + + * webkit/webkitprivate.h: + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + (_WebKitWebInspectorPrivate::webkit_web_inspector_set_property): + (_WebKitWebInspectorPrivate::webkit_web_inspector_get_property): + (_WebKitWebInspectorPrivate::webkit_web_inspector_set_inspector_client): + * webkit/webkitwebview.cpp: + +2009-03-05 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Olliej. + + https://bugs.webkit.org/show_bug.cgi?id=24295 + webkit_web_back_forward_list_add_item needs a Since tag + + Add missing Since tag to webkit_web_back_forward_list_add_item + documentation. + + * webkit/webkitwebbackforwardlist.cpp: + +2009-03-05 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=24417 + [GTK] WebKitDownload's _cancel and _dispose methods may emit warnings + + NULL-check for timer on _cancel and _dispose, to avoid bad + warnings. + + * webkit/webkitdownload.cpp: + (_WebKitDownloadPrivate::webkit_download_finalize): + (_WebKitDownloadPrivate::webkit_download_cancel): + +2009-03-02 Xan Lopez <xan@gnome.org> + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=24287 + [GTK] Move auth dialog feature to WebKit/ + + Add WebKitSoupAuthDialog and add it to the session in webkit_init. + + * webkit/webkitprivate.cpp: + (currentToplevelCallback): + (webkit_init): + * webkit/webkitsoupauthdialog.c: Added. + (webkit_soup_auth_dialog_class_init): + (webkit_soup_auth_dialog_init): + (webkit_soup_auth_dialog_session_feature_init): + (free_authData): + (set_password_callback): + (response_callback): + (table_add_entry): + (show_auth_dialog): + (find_password_callback): + (session_authenticate): + (attach): + * webkit/webkitsoupauthdialog.h: Added. + +2009-03-03 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=16826 + [Gtk] Implement WebKitDownload + + Implement download, and provide a nice object wrapping the + download process. Initial work done by Marco Barisione and + Pierre-Luc Beaudoin for Collabora. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::downloadURL): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::download): + (WebKit::FrameLoaderClient::startDownload): + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitdownload.cpp: Added. + (_WebKitDownloadPrivate::): + (_WebKitDownloadPrivate::webkit_download_dispose): + (_WebKitDownloadPrivate::webkit_download_finalize): + (_WebKitDownloadPrivate::webkit_download_get_property): + (_WebKitDownloadPrivate::webkit_download_set_property): + (_WebKitDownloadPrivate::webkit_download_class_init): + (_WebKitDownloadPrivate::webkit_download_init): + (_WebKitDownloadPrivate::webkit_download_new): + (_WebKitDownloadPrivate::webkit_download_open_stream_for_uri): + (_WebKitDownloadPrivate::webkit_download_close_stream): + (_WebKitDownloadPrivate::webkit_download_start): + (_WebKitDownloadPrivate::webkit_download_cancel): + (_WebKitDownloadPrivate::webkit_download_get_uri): + (_WebKitDownloadPrivate::webkit_download_get_network_request): + (_WebKitDownloadPrivate::webkit_download_set_response): + (_WebKitDownloadPrivate::webkit_download_get_suggested_filename): + (_WebKitDownloadPrivate::webkit_download_get_destination_uri): + (_WebKitDownloadPrivate::webkit_download_set_destination_uri): + (_WebKitDownloadPrivate::webkit_download_get_state): + (_WebKitDownloadPrivate::webkit_download_get_total_size): + (_WebKitDownloadPrivate::webkit_download_get_current_size): + (_WebKitDownloadPrivate::webkit_download_get_progress): + (_WebKitDownloadPrivate::webkit_download_get_elapsed_time): + (_WebKitDownloadPrivate::webkit_download_received_data): + (_WebKitDownloadPrivate::webkit_download_finished_loading): + (_WebKitDownloadPrivate::webkit_download_error): + (_WebKitDownloadPrivate::DownloadClient::DownloadClient): + (_WebKitDownloadPrivate::DownloadClient::didReceiveResponse): + (_WebKitDownloadPrivate::DownloadClient::didReceiveData): + (_WebKitDownloadPrivate::DownloadClient::didFinishLoading): + (_WebKitDownloadPrivate::DownloadClient::didFail): + (_WebKitDownloadPrivate::DownloadClient::wasBlocked): + (_WebKitDownloadPrivate::DownloadClient::cannotShowURL): + * webkit/webkitdownload.h: Added. + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkitmarshal.list: + +2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [Gtk] get the HTTP layout tests going + https://bugs.webkit.org/show_bug.cgi?id=24259 + + Added API to get the response mime type from a frame. We need this + so we can decide if we need to dump the frame as text or its + render tree + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Holger Freyther. + + [Gtk] get the HTTP layout tests going + https://bugs.webkit.org/show_bug.cgi?id=24259 + + Create a WebKitWebHistoryItem for each WebCore::HistoryItem when + necessary. + Add necessary API additions for us to be able to dump a WebKitWebHistoryItem + + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit): + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_target): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_children): + (WebKit::core): + (WebKit::kit): + +2009-03-01 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_get_encoding): + * webkit/webkitwebview.h: Implement 'encoding' and 'custom-encoding' + properties as well as webkit_web_view_get_encoding. + +2009-03-01 Gustavo Noronha Silva <gns@gnome.org> + + Unreviewed simple wording fix for the NEWS file. + + * NEWS: + +2009-03-01 Xan Lopez <xan@gnome.org> + + Add NEWS file to track progress between releases. + + * NEWS: Added. + +2009-02-28 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + * webkit/webkitwebview.cpp: Let webkit_web_view_open add file:// if a + locale path is passed for compatibility, since we used to support that. + +2009-02-27 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by David Hyatt. + + Automatically ignore empty requests to avoid crashing. This fixes + the crash in fast/loader/empty-embed-src-attribute.html. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + +2009-02-27 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24221 + [GTK] Do not emit load-finished when being disposed + + webkit_web_view_stop_load() is called from dispose() on + WebKitWebView. This eventually calls postProgressFinishedNotification + in FrameLoaderClientGtk, which emits load-finished. Add + a 'disposing' flag to WebView that we can check here, so + we avoid emitting signals on objects on their way to be + destroyed. This fixes a bunch of critical warnings when + closing a loading WebView. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + +2009-02-27 Xan Lopez <xan@gnome.org> + + Rubber-stamped by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24222 + [GTK] Remove checks for old glib versions + + libsoup, which is a hard dependency, needs at least glib 2.15.3, + so remove all glib checks for versions older than that. + + * webkit/webkitwebview.cpp: + +2009-02-26 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=16947 + [GTK] Missing HTTP Auth challenge + + Add new marshalers list. + + * webkitmarshal.list: Added. + +2009-02-26 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24193 + [GTK] Checkbuttons not activated with space + + Do not swallow key events with GtkIMContext for non-editable + content. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleInputMethodKeydown): + +2009-02-26 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=24103 + [GTK] Use correct return value for WebView button-release handler + + We are returning whatever the core code tells us it did, but this + does not play well with the GTK+ model. GTK+ in general expects it + will see a button-release if it saw a button-press and no + motion/leave/etc events in between. EventHandler.cpp will, in some + cases, not handle press but handle release, confusing the parent + container of the WebView. + + As a workaround return always FALSE for button-release (this is + the same than the Windows port does). + + * webkit/webkitwebview.cpp: + +2009-02-26 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=17585 + [gtk] get|set encoding api + + Add functions to get and set a custom encoding an a view. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + (webkit_web_view_set_custom_encoding): + (webkit_web_view_get_custom_encoding): + * webkit/webkitwebview.h: + +2009-02-23 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=22624 + [SOUP][GTK] Need API to get SoupSession from WebKit. + + Add API to get the default soup session. + + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2009-02-23 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=22624 + [SOUP][GTK] Need API to get SoupSession from WebKit. + + Add soup dependency to pc file. + + * webkit.pc.in: + +2009-02-23 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Mark Rowe. + + [GTK] Back / Forward history menus are flipped + https://bugs.webkit.org/show_bug.cgi?id=22694 + + Don't call g_list_reverse when returning the back or forward list. + + * tests/main.c: + (test_webkit_web_back_forward_list_order): + (main): + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit): + +2009-02-17 Xan Lopez <xan@gnome.org> + + Rubber-stamped by Alexey Proskuryakov. + + Restoring change landed in r40715, which was accidentally undone + by r40918. + + * webkit/webkitwebframe.cpp: + +2009-02-12 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=17176 + [GTK] API: hovering-over-link and webkit_web_view_open /_load_foo + + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: Introduce webkit_web_frame_load_uri, + webkit_web_frame_load_string, webkit_web_view_load_uri and + webkit_web_view_load_request and unify implementations. + +2009-02-11 Dimitri Dupuis-latour <dupuislatour@apple.com> + + Stub out InspectorClient::hiddenPanels. + + Reviewed by Timothy Hatcher. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::hiddenPanels): + * WebCoreSupport/InspectorClientGtk.h: + +2009-02-07 Holger Hans Peter Freyther <zecke@selfish.org> + + Unreviewed build fix Use toNormalizedRange(). + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::clipboard_get_contents_cb): + +2009-02-06 Geoffrey Garen <ggaren@apple.com> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::updateGlobalHistoryRedirectLinks): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-02-06 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + Reported by Daniel Macks. + + https://bugs.webkit.org/show_bug.cgi?id=20412 + + Use positive numbers for the target info IDs, gtk_target_list_add + casts them to 'guint'. Also just start them from 0, since the + values are not relevant or magic in any way, they are just used as + tokens for the user of the API. + + * webkit/webkitwebview.h: + +2009-02-06 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23769 + + Do not use empty ResourceError errors. + + Rather create bogus but non-null errors, since some codepaths + expect these. For example, see DocumentLoader::mainReceivedError. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::cancelledError): + (WebKit::FrameLoaderClient::blockedError): + (WebKit::FrameLoaderClient::cannotShowURLError): + (WebKit::FrameLoaderClient::interruptForPolicyChangeError): + (WebKit::FrameLoaderClient::cannotShowMIMETypeError): + (WebKit::FrameLoaderClient::fileDoesNotExistError): + (WebKit::FrameLoaderClient::pluginWillHandleLoadError): + +2009-02-06 Xan Lopez <xan@gnome.org> + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=23761 + + Use two-arg KURL ctor. + + We are using the one-arg ctor currently, but: + + - It assumes the strings are already encoded, which is not + necesarily the case for us. + + - The single-argument KURL ctors expect their input to already be + the output of a previous KURL::parse call, so for the general + case (ie, random user input) we need to use the two-arg ctor + anyway. + + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2009-02-05 Aaron Boodman <aa@chromium.org> + + Reviewed by Dave Hyatt. + + https://bugs.webkit.org/show_bug.cgi?id=23708 + Adds documentElementAvailable() callback to FrameLoaderClient. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::documentElementAvailable): + Stub out documentElementAvailable() + * WebCoreSupport/FrameLoaderClientGtk.h: + Ditto. + +2009-02-03 Hiroyuki Ikezoe <poincare@ikezoe.net> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22988 + [GTK] Need a public method to add a WebKitWebHistoryItem to + WebKitWebBackForwardList. + + Wrap WebCore::BackForwardList::addItem. + + * tests/main.c: + (test_webkit_web_back_forward_list_add_item): + (main): + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_add_item): + * webkit/webkitwebbackforwardlist.h: + +2009-02-02 Geoffrey Garen <ggaren@apple.com> + + Build fix. + + * webkit/webkitwebview.cpp: + +2009-02-02 Geoffrey Garen <ggaren@apple.com> + + Build fix. + + * webkit/webkitwebframe.cpp: + +2009-02-02 Geoffrey Garen <ggaren@apple.com> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2009-02-02 Geoffrey Garen <ggaren@apple.com> + + Reviewed by Sam Weinig. + + Track redirects in global history. + + Keep GTK building. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::updateGlobalHistoryForRedirectWithoutHistoryItem): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-02-02 Anders Carlsson <andersca@apple.com> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-02-02 Anders Carlsson <andersca@apple.com> + + Reviewed by Dan Bernstein. + + Update for changes to WebCore. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createPlugin): + (WebKit::FrameLoaderClient::createJavaAppletWidget): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-02-02 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Darin Adler. + + Move Frame::forceLayout, Frame::adjustPageHeight and Frame::forceLayoutWithPageWidthRange to FrameView + + https://bugs.webkit.org/show_bug.cgi?id=23428 + + FrameView::forceLayout could be killed but the comment might + contain a value over the the plain FrameView::layout... + + Adjust the WebCore/WebKit consumers of these methods. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::forceLayout): + * webkit/webkitwebview.cpp: + +2009-01-30 Geoffrey Garen <ggaren@apple.com> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Simon Hausmann. + + https://bugs.webkit.org/show_bug.cgi?id=22056 + + Kill FrameLoaderClient.cpp, move the code over to Frame::createView + + FrameLoaderClient is supposed to be an interface, move the + to be shared code to Frame which is a controller and is + allowed to create a FrameView. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2009-01-27 Brady Eidson <beidson@apple.com> + + Reviewed by Dan Bernstein + + Rework FrameLoaderClient to work on a CachedFrame basis instead of CachedPage + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::savePlatformDataToCachedFrame): + (WebKit::FrameLoaderClient::transitionToCommittedFromCachedFrame): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2009-01-25 Darin Adler <darin@apple.com> + + Try to fix GTK build. + + * webkit/webkitwebview.cpp: Added include of FloatQuad.h. + +2009-01-13 Alexander V. Butenko <alex@digiqube.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=23279 + + Fix crash on WebView dispose stage. + + Add null checks to webkit_web_view_set_scroll_adjustments and + webkit_web_view_get_accessible as they get called from within + the dispose. + + * webkit/webkitwebview.cpp: + +2009-01-11 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + Use NULL instead of 0 when dealing with pointers, as agreed for + the coding style of the WebKit GTK port for its GTK+ specific + files. + + * webkit/webkitwebview.cpp: + +2009-01-11 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + Add padding to the class structs to avoid breaking ABI each time + we add stuff there. + + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebnavigationaction.h: + * webkit/webkitwebpolicydecision.h: + * webkit/webkitwebview.h: + +2009-01-09 Benjamin Otte <otte@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=23194 + + make the finalize function the dispose function. Not releasing held + objects in dispose can cause crashers later. + + * webkit/webkitwebview.cpp: + +2009-01-09 Benjamin Otte <otte@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=23194 + + Remove broken code that uses a fallback. The previous code did 2 + policy decisions which caused crashes. + Download is still notImplemented(); + + * webkit/webkitwebpolicydecision.cpp: + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_download): + +2009-01-03 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + [GTK] Need a public method to reload view bypassing cache + https://bugs.webkit.org/show_bug.cgi?id=19815 + + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + + Add webkit_web_view_reload_bypass_cache. + +2009-01-07 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Maciej Stachowiak. + + Add private API to get the number of active animations of + a frame. This is required by the DumpRenderTree utility. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2009-01-05 Adam Treat <adam.treat@torchmobile.com> + + Fix build + + * WebCoreSupport/ChromeClientGtk.h: + +2009-01-05 Adam Treat <adam.treat@torchmobile.com> + + Reviewed by George Staikos. + + Build fix for contentsSizeChanged + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::contentsSizeChanged): + * WebCoreSupport/ChromeClientGtk.h: + +2009-01-04 Adam Treat <adam.treat@torchmobile.com> + + Reviewed by George Staikos. + + Make the gtk port build with the new fixedLayoutSize feature + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2009-01-03 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Darin Adler. + + [GTK] Fix the reference counting of WebKitWebFrames + + The ownership is the following: WebKitWebView owns a WebCore::Page. + WebKitWebView is creating one WebKitWebFrame which will be the + mainFrame of the WebCore::Page (having the reference on the Frame). + + The FrameLoaderClient has the reference of the WebKitWebFrame for + the main frame and also any other frame. This means when the + WebCore::Frame goes away the FrameLoaderClient will go away which + will normally remove the last reference of the WebKitWebFrame. Because + an API user might have g_object_ref'ed the WebKitWebFrame null + checks had to be added to WebKitWebFrame. + + For WebCore::Frames created by the FrameLoaderClient the ownership + will be passed down to the FrameTree, the WebKitWebFrame is not holding + a reference to the WebCore::Frame. + + Do not g_object_unref the mainFrame in the destructor of the + WebKitWebFrame as this will happen from within the WebCore::Page + destruction. Do not hold a reference to the WebCore::Frame (circle) in + WebKitWebFrame, add null checks as the WebCore::Frame might have gone + away. Do not keep track of the FrameLoaderClient in the private + structures as it was mostly unusued. + + https://bugs.webkit.org/show_bug.cgi?id=21837 + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::frameLoaderDestroyed): + (WebKit::FrameLoaderClient::createFrame): + * tests/main.c: Add test case. + (test_webkit_web_frame_create_destroy): + (test_webkit_web_frame_lifetime): + (main): + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2009-01-02 Holger Hans Peter Freyther <zecke@selfish.org> + + Unreviewed build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + +2008-12-31 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Nikolas Zimmermann. + + https://bugs.webkit.org/show_bug.cgi?id=17045 + + Add section information for View, Frame, Settings, HistoryItem, BackForwardList, WindowFeatures and Inspector + + Add section information and informal examples for WebKitWebView, + WebKitWebFrame, WebKitWebSettings, WebKitWebNetworkRequest, + WebKitWebWindowFeatures, WebKitWebHistoryItem, + WebKitWebBackForwardList and WebKitWebInspector. + + * docs/webkitgtk-sections.txt: Decide to not document some bits + * webkit/webkitnetworkrequest.cpp: + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebinspector.cpp: + * webkit/webkitwebsettings.cpp: + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebwindowfeatures.cpp: + +2008-12-21 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=16092 + [GTK] Middle-mouse click should allow opening a URL in a new tab + + Add mouse button and keyboard state modifiers info to navigation action. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + * webkit/webkitwebnavigationaction.cpp: + (_WebKitWebNavigationActionPrivate::): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_property): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_property): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_button): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_modifier_state): + * webkit/webkitwebnavigationaction.h: + +2008-12-19 Marco Barisione <marco.barisione@collabora.co.uk> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=16562 + [gtk] Implement WebPolicyDelegate methods + + Original work by Pierre-Luc Beaudoin. Final touches by Gustavo + Noronha. + + This implements the delegates methods of WebPolicyDelegate. + Since Gtk+/C doesn't have delegate methods, they are replaced with + signals. + + A new object WebKitWebPolicyDecision allows the browser to delay its + response in certain cases. WebKitWebNavigationAction contains the + information about what caused a navigation request. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::~FrameLoaderClient): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + (WebKit::FrameLoaderClient::cancelPolicyCheck): + (WebKit::FrameLoaderClient::canShowMIMEType): + * WebCoreSupport/FrameLoaderClientGtk.h: + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitprivate.cpp: + (WebKit::kit): + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebnavigationaction.cpp: Added. + (_WebKitWebNavigationActionPrivate::): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_property): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_property): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_init): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_finalize): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_reason): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_reason): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_original_uri): + (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_original_uri): + * webkit/webkitwebnavigationaction.h: Added. + * webkit/webkitwebpolicydecision.cpp: Added. + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_class_init): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_init): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_new): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_use): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_ignore): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_download): + (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_cancel): + * webkit/webkitwebpolicydecision.h: Added. + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-12-18 Dan Bernstein <mitz@apple.com> + + Reviewed by Sam Weinig. + + - stub out FrameLoaderClient::shouldUseCredentialStorage(). + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::shouldUseCredentialStorage): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-12-18 Sam Weinig <sam@webkit.org> + + Reviewed by John Sullivan. + + Stub out FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout() + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-12-13 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Cameron Zwarich. + + [GTK] Fix crash with LayoutTests/fast/loader/frame-creation-removal.html + + Call WebCore::Frame::init after the frame has been given + a name and been added to the FrameTree of the parent. + + Removing the call to init is fine as FrameLoaderClientGtk::createFrame + is the only user of webkit_web_frame_init_with_web_view and is already + calling WebCore::Frame::init. + + * webkit/webkitwebframe.cpp: + +2008-12-13 Adam Bergkvist <adam.bergkvist@ericsson.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22779 + + Check for GTK version >= 2.14.0 before using gtk_test_init. + + * tests/main.c: + (main): + +2008-12-13 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=22039 + + Implement animation and transition pausing as needed by DumpRenderTree. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2008-11-29 Holger Hans Peter Freyther <zecke@selfish.org> + + Rubber-stamped by Simon Hausmann. + + https://bugs.webkit.org/show_bug.cgi?id=22574 + + Make webkit_web_view_set_window_features internal + + Calling this method will not result in a notify::window-features + signal being emitted. This would allow replacing a + WebKitWebWindowFeature on a WebKitWebView without anyone noticing + and the client code would monitor the wrong object. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::createWindow): + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-12-09 Brett Wilson <brettw@chromium.org> + + Reviewed by Dave Hyatt. + + https://bugs.webkit.org/show_bug.cgi?id=22177 + + Add a callback on ChromeClient that the state of form elements on + the page has changed. This is to allow clients implementing session + saving to know when the current state is dirty. + + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::formStateDidChange): + +2008-12-07 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Eric Seidel. + + [Gtk+] Use glib's unit test facilities to test the WebKit/Gtk+ API + + https://bugs.webkit.org/show_bug.cgi?id=22491 + + Add the skeleton to WebKit/gtk/tests and integrate that into the + buildsystem. Testing support was added in glib 2.16. For versions + using glib < 2.16 we compile an empty application. + + * tests/main.c: Added. https://bugs.webkit.org/show_bug.cgi?id=21837 + will be the first consumer. + (main): + +2008-12-06 Simon Fraser <simon.fraser@apple.com> + + Reviewed by Dave Hyatt + + https://bugs.webkit.org/show_bug.cgi?id=15671 + + Renderer::caretRect() is now localCaretRect(), which needs + converting to absolute coordinates (taking transforms into account). + + * webkit/webkitwebview.cpp: + +2008-12-01 Xan Lopez <xan@gnome.org> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=22553 + Remove unneeded GObject casts. + + Remove unneeded casts to GObject in functions that take a gpointer + argument. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::setWindowRect): + (WebKit::ChromeClient::createWindow): + (WebKit::ChromeClient::setToolbarsVisible): + (WebKit::ChromeClient::toolbarsVisible): + (WebKit::ChromeClient::setStatusbarVisible): + (WebKit::ChromeClient::statusbarVisible): + (WebKit::ChromeClient::setScrollbarsVisible): + (WebKit::ChromeClient::scrollbarsVisible): + (WebKit::ChromeClient::setMenubarVisible): + (WebKit::ChromeClient::menubarVisible): + (WebKit::ChromeClient::setToolTip): + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::createPage): + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + * webkit/webkitwebwindowfeatures.cpp: + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new_from_core_features): + +2008-11-29 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=17122 + [GTK] Bad font default settings + + Implement a property "enforce-96-dpi" in WebKitWebSettings + that can be enabled to force the view to assume 96 DPI. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + * webkit/webkitwebview.cpp: + +2008-11-28 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Nikolas Zimmermann. + + Simplify the code. There is no reason to have code like + if (true) return false; which is using temporary variables. + + * webkit/webkitwebview.cpp: + +2008-11-28 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Nikolas Zimmermann. + + Remove bogus null checks. The WebKitWebView own's a WebCore::Page + which is owning a WebCore::ChromeClient. There is no way that a + WebCore::ChromeClient is still around when the WebKitWebView is gone. + + m_webView can only be null when a ChromeClient gets constructed with + a null WebKitWebView which is not allowed. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): + (WebKit::ChromeClient::windowRect): + (WebKit::ChromeClient::setWindowRect): + (WebKit::ChromeClient::pageRect): + (WebKit::ChromeClient::focus): + (WebKit::ChromeClient::unfocus): + (WebKit::ChromeClient::show): + (WebKit::ChromeClient::setToolbarsVisible): + (WebKit::ChromeClient::toolbarsVisible): + (WebKit::ChromeClient::setStatusbarVisible): + (WebKit::ChromeClient::statusbarVisible): + (WebKit::ChromeClient::setScrollbarsVisible): + (WebKit::ChromeClient::setMenubarVisible): + (WebKit::ChromeClient::menubarVisible): + (WebKit::ChromeClient::canTakeFocus): + (WebKit::ChromeClient::repaint): + (WebKit::ChromeClient::scroll): + (WebKit::ChromeClient::platformWindow): + +2008-11-28 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed and slightly modified by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=19130 + + ChromeClient::createWindow and friends need to be implemented + + Code from Gustavo Noronha and Marco Barisione + <marco.barisione@collabora.co.uk> in this change set. + + Implemented all the ChromeClient interfaces needed to have new + window creation functioning and exposed to client code. We + implemented a mirror GObject to the WindowFeatures object provided + by WebCore. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::windowRect): + (WebKit::ChromeClient::setWindowRect): + (WebKit::ChromeClient::unfocus): + (WebKit::ChromeClient::createWindow): + (WebKit::ChromeClient::show): + (WebKit::ChromeClient::setToolbarsVisible): + (WebKit::ChromeClient::toolbarsVisible): + (WebKit::ChromeClient::setStatusbarVisible): + (WebKit::ChromeClient::statusbarVisible): + (WebKit::ChromeClient::setScrollbarsVisible): + (WebKit::ChromeClient::scrollbarsVisible): + (WebKit::ChromeClient::setMenubarVisible): + (WebKit::ChromeClient::menubarVisible): + (WebKit::ChromeClient::setResizable): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchShow): + (WebKit::FrameLoaderClient::dispatchCreatePage): + * webkit/webkit.h: + * webkit/webkitdefines.h: + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + * webkit/webkitwebwindowfeatures.cpp: Added. + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_class_init): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_init): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_finalize): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_set_property): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_get_property): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new_from_core_features): + (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_equal): + * webkit/webkitwebwindowfeatures.h: Added. + +2008-11-24 Darin Fisher <darin@chromium.org> + + Fix bustage. + + http://bugs.webkit.org/show_bug.cgi?id=15643 + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::isSelectTrailingWhitespaceEnabled): + * WebCoreSupport/EditorClientGtk.h: + +2008-11-24 Darin Adler <darin@apple.com> + + Reviewed by Dan Bernstein. + + - https://bugs.webkit.org/show_bug.cgi?id=22470 + remove unneeded URL argument from FrameLoaderClient::updateGlobalHistory + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::updateGlobalHistory): Remove argument. + * WebCoreSupport/FrameLoaderClientGtk.h: Ditto. + +2008-11-24 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=17122 + [GTK] Bad font default settings + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + Use default font size 12 instead of 10 + +2008-11-24 Zan Dobersek <zandobersek@gmail.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22039 + + Implement a semi-private function for adding a directory to + PluginDatabase's paths. + + * webkit/webkitprivate.h: + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_add_extra_plugin_directory): + +2008-11-23 Holger Hans Peter Freyther <zecke@selfish.org> + + Rubber-stamped by Sam Weinig. + + Add gtk-doc configuration/source for the WebKit/Gtk+ Reference Manual + + These files will be used by gtk-doc to generate the documentation. They + contain information how to group the symbols of our API, which objects + to inspect during the generation of the manual and how to display the + manual. + + * docs/webkitgtk-docs.sgml: Added. + * docs/webkitgtk-overrides.txt: Added. + * docs/webkitgtk-sections.txt: Added. + * docs/webkitgtk.types: Added. + +2008-11-23 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Sam Weinig. + + Make gtk-doc happy with the existing API documentation + + - Mark the *Private pointers in the struct private + - Use Returns: where gtk-doc wants us to + - Fix the parameters to make gtk-doc happy + - Fix signal references + + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebbackforwardlist.cpp: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-11-19 Darin Fisher <darin@chromium.org> + + Bustage fix. + + https://bugs.webkit.org/show_bug.cgi?id=22373 + Ports busted by addition of ScriptValue.{h,cpp} + + * webkit/webkitwebview.cpp: + +2008-11-18 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Simon Hausmann. + + Attempt to share transitionToCommittedForNewPage of FrameLoaderClient with the different ports + + After Hyatt's work on Widget and ScrollView there is little difference + between the implementation of Qt, Gtk+ and Win. In fact any kind of + difference is mostly a bug. Alp has fixed two of such errors for the Gtk+ + port and the Qt port has at least one of them left. + + The only difference between the implementations is in getting the the + IntSize for the new FrameView, the background color to be applied and + eventually some post processing. + + Unify the implementations by providing a static helper function that + takes a Frame, IntSize, color and transparency bit and calling it from + the Gtk+, the Qt and the Windows port. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2008-11-16 Christian Dywan <christian@twoasts.de> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=22207 + [Gtk] Font sizes are not handled properly when updated at runtime + + * webkit/webkitwebview.cpp: Move the DPI/ conversion into a + helper function and apply the logic in the notification callback. + +2008-11-06 Alp Toker <alp@nuanti.com> + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=22047 + GTK: Add support for multiple file selection in the file upload control + + Implemented with GtkFileChooser. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::runOpenPanel): + +2008-11-03 Cameron Zwarich <zwarich@apple.com> + + Rubber-stamped by Maciej Stachowiak. + + Move more files into the runtime subdirectory of JavaScriptCore. + + * webkit/webkitprivate.cpp: + +2008-11-03 Alp Toker <alp@nuanti.com> + + Reviewed by Holger Freyther. + + Deprecate flawed webkit_web_frame_new() function. This would never + have worked properly when used outside WebCore since Frame::create() + can only be called without an owner element once in the lifetime of a + Page and would result in assertions, leaks and an unusable WebView + instance. + + Frame creation may be exposed in API some time later via the DOM + binding but probably not in the WebKit GTK+ core API. + + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + +2008-11-03 Alp Toker <alp@nuanti.com> + + Reviewed by Holger Freyther. + + Redundant scrollbars appear in frames where they shouldn't be visible + eg. embedded Google adverts. + + Call setCanHaveScrollbars() when necessary. The Mac and Win ports + already have this but it was missing in FrameLoaderClientGtk. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2008-11-03 Alp Toker <alp@nuanti.com> + + Rubber-stamped by Holger Freyther. + + Sync WebKit GTK+ default UA version string to 528.5+. (We're still + doing this manually!) + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::composeUserAgent): + +2008-10-31 Christian Dywan <christian@twotoasts.de> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=22018 + enable-developer-extras doesn't toggle WebInspector + + * webkit/webkitwebview.cpp: + Add missing 'if' in notification for 'enable-developer-extras'. + +2008-10-30 Alp Toker <alp@nuanti.com> + + Reviewed by Dave Hyatt. + + Fix GIF animations. WebCore will not update animated GIFs if + the WebView is marked offscreen so we need to call + frameView->setParentVisible() when necessary like the Mac and Win + ports do. Regression was introduced around r37155 during the + HostWindow refactor. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2008-10-30 Alp Toker <alp@nuanti.com> + + Rubber-stamped by Holger Freyther. + + Fix typo in recently added web inspector signal. dettach -> detach. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::detachWindow): + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + +2008-10-30 Alp Toker <alp@nuanti.com> + + Fix version comments for the web inspector added in r37982. Available + since 1.0.3, not 1.0.2. + + * webkit/webkitwebinspector.cpp: + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + +2008-10-29 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed and slightly changed by Holger Freyther. + + Implemented a new WebKitWebInspector class to provide a GObject + API for the Web Inspector. Also implemented InspectorClient. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::notifyWebViewDestroyed): + (WebKit::InspectorClient::InspectorClient): + (WebKit::InspectorClient::inspectorDestroyed): + (WebKit::InspectorClient::webViewDestroyed): + (WebKit::InspectorClient::createPage): + (WebKit::InspectorClient::showWindow): + (WebKit::InspectorClient::closeWindow): + (WebKit::InspectorClient::attachWindow): + (WebKit::InspectorClient::detachWindow): + (WebKit::InspectorClient::inspectedURLChanged): + * WebCoreSupport/InspectorClientGtk.h: + * webkit/webkit.h: + * webkit/webkit-marshal.list: + * webkit/webkitdefines.h: + * webkit/webkitprivate.h: + * webkit/webkitwebinspector.cpp: Added. + (_WebKitWebInspectorPrivate::webkit_inspect_web_view_request_handled): + (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init): + (_WebKitWebInspectorPrivate::webkit_web_inspector_init): + (_WebKitWebInspectorPrivate::webkit_web_inspector_finalize): + (_WebKitWebInspectorPrivate::webkit_web_inspector_set_property): + (_WebKitWebInspectorPrivate::webkit_web_inspector_get_property): + (_WebKitWebInspectorPrivate::webkit_web_inspector_set_web_view): + * webkit/webkitwebinspector.h: Added. + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-10-27 Michael Tross <michael@tross.org> + + Reviewed by Alp Toker. Landed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=21827 + [GTK] Fix memory leak in webkit_web_view_load_string + + * webkit/webkitwebview.cpp: + +2008-10-24 Sam Weinig <sam@webkit.org> + + Fix the Gtk build. + + * WebCoreSupport/ChromeClientGtk.cpp: + +2008-10-24 Sam Weinig <sam@webkit.org> + + Reviewed by Dan Bernstein. + + Fix https://bugs.webkit.org/show_bug.cgi?id=21759 + Layering violation: FileChooser should not depend on Document/Frame/Page + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::runOpenPanel): + * WebCoreSupport/ChromeClientGtk.h: + +2008-10-24 Timothy Hatcher <timothy@apple.com> + + Stub out new InspectorClient methods. + + https://bugs.webkit.org/show_bug.cgi?id=21856 + + Reviewed by Darin Adler. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::populateSetting): Not implemented. + (WebKit::InspectorClient::storeSetting): Ditto. + (WebKit::InspectorClient::removeSetting): Ditto. + * WebCoreSupport/InspectorClientGtk.h: + +2008-10-22 Alp Toker <alp@nuanti.com> + + Build fix for older GTK+ versions where GTK_TYPE_TARGET_LIST isn't + defined. + + * webkit/webkitwebview.cpp: + +2008-10-22 Alp Toker <alp@nuanti.com> + + Reviewed by Adam Roben. + + Avoid critical warnings on older GTK+ versions (2.8) by not checking + for GTK+ setting properties when we know they don't exist. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::inputMethodsMenuItem): + (WebKit::unicodeMenuItem): + +2008-10-20 Sam Weinig <sam@webkit.org> + + Reviewed by Anders Carlsson. + + Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-10-20 Alp Toker <alp@nuanti.com> + + Reviewed by Dave Hyatt. + + https://bugs.webkit.org/show_bug.cgi?id=21303 + [GTK] Scrolling glitches + + Implement a buffering scheme to avoid full repaints when scrolling + views or subframes significantly improving scrolling performance. + + Improve rendering performance by coalescing large numbers of small + repaints. + + Also fixes long-running issues with scrollbar positioning and frame + invalidation. + + Rendering in the GTK+ port should be more similar to other ports after + these changes. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::repaint): + (WebKit::ChromeClient::scroll): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::forceLayout): + * webkit/webkitwebview.cpp: + +2008-10-17 Luke Kenneth Casson Leighton <lkcl@lkcl.net> + + Reviewed by Mark Rowe. Landed by Jan Alonzo. + + https://bugs.webkit.org/show_bug.cgi?id=20403 + [Gtk] Segfault after a table with an iframe is attempted to be added twice to DOM model with javascript + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::frameLoaderDestroyed): + (WebKit::FrameLoaderClient::detachedFromParent4): + +2008-10-06 David Hyatt <hyatt@apple.com> + + Enable viewless Mac WebKit to paint some basic pages. + + Reviewed by Sam Weinig + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-10-03 David Hyatt <hyatt@apple.com> + + Fix Gtk bustage from use of containingWindow() over on the WebKit side. Replace with HostWindow use. + + * webkit/webkitwebview.cpp: + +2008-10-03 David Hyatt <hyatt@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=21340 + + Remove "containingWindow()/setContainingWindow()" from Widget. HostWindow covers this now. + + Reviewed by Dan Bernstein & Darin Adler + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + +2008-10-03 Alp Toker <alp@nuanti.com> + + Remove some left-over GTK+ includes. No change in functionality. + + * webkit/webkitwebhistoryitem.h: + +2008-10-03 Alp Toker <alp@nuanti.com> + + Build fix following r37234. Remove addToDirtyRegion from the header + too. + + * WebCoreSupport/ChromeClientGtk.h: + +2008-10-03 David Hyatt <hyatt@apple.com> + + Remove addToDirtyRegion. + + Reviewed by Oliver Hunt + + * WebCoreSupport/ChromeClientGtk.cpp: + +2008-10-02 David Hyatt <hyatt@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=21314 + + Make scrollBackingStore cross-platform. + + Reviewed by Sam Weinig + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::repaint): + (WebKit::ChromeClient::scroll): + * WebCoreSupport/ChromeClientGtk.h: + +2008-10-01 David Hyatt <hyatt@apple.com> + + https://bugs.webkit.org/show_bug.cgi?id=21282 + + Make contentsToScreen/screenToContents cross-platform. Only implemented by Mac/Win right now. + + Reviewed by Adam Roben + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::windowToScreen): + (WebKit::ChromeClient::screenToWindow): + * WebCoreSupport/ChromeClientGtk.h: + +2008-09-30 Dave Hyatt <hyatt@apple.com> + + http://bugs.webkit.org/show_bug.cgi?id=21250 + + Rename updateContents to repaintContentRectangle and make it cross-platform by always sending + repaints up through the ChromeClient. + + Reviewed by Darin Adler + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::repaint): + * WebCoreSupport/ChromeClientGtk.h: + +2008-09-16 Alp Toker <alp@nuanti.com> + + Suggested by Dave Hyatt. + + Build fix and cleanup. Rename ScrollBar to Scrollbar. + + * webkit/webkitwebview.cpp: + +2008-09-13 Adrien Nader <camaradetux@gmail.com> + + Gtk build fix, not reviewed. + + * webkit/webkitwebview.cpp: + +2008-09-10 Alp Toker <alp@nuanti.com> + + Reviewed by Mark Rowe. + + https://bugs.webkit.org/show_bug.cgi?id=17267 + [GTK] Primary selection/clipboard support + + Implement primary selection support (copying only, no paste yet). + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::clipboard_get_contents_cb): + (WebKit::clipboard_clear_contents_cb): + (WebKit::EditorClient::respondToChangedSelection): + +2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca> + + Reviewed by Maciej Stachowiak. + + Bug 20704: Replace the KJS namespace + <https://bugs.webkit.org/show_bug.cgi?id=20704> + + Rename the KJS namespace to JSC. + + * webkit/webkitprivate.cpp: + (webkit_init): + +2008-09-05 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=18346 + [GTK] Remove build warnings + + Removed/commented code that is not (yet) used, and reordered + member variables initialization for FrameLoaderClient, so that the + compiler is happy and prints less warnings when building. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + +2008-09-03 Alp Toker <alp@nuanti.com> + + Build fix following r36073. Include config.h where necessary. + + * WebCoreSupport/PasteboardHelperGtk.cpp: + * webkit/webkitversion.cpp: + +2008-09-01 Alp Toker <alp@nuanti.com> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=19939 + [GTK] webkit_web_history_item_get_title() fails with assertion + + Make sure newly constructed WebHistoryItem objects wrap a WebCore + history item when necessary. Avoid G_PARAM_CONSTRUCT since it destroys + history data -- use WEBKIT_PARAM flags instead as they do the right + thing. This restores history functionality. + + Also use CString to simplify UTF-8 string management. + + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit): + No need to initialize the vector with a size since it's cleared by the + callee. + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri): + +2008-08-27 Adrien Nader <camaradetux@gmail.com> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=20099 + [GTK] SHIFT+PAGE_UP/DOWN doesn't extend selection + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): + +2008-08-27 Brady Eidson <beidson@apple.com> + + Reviewed by Anders + + <rdar://problem/6134133> - Crash when loading large movie as a standalone document + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::pluginWillHandleLoadError): Stubbed for now + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-08-18 Alp Toker <alp@nuanti.com> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=20350 + [GTK] Get DumpRenderTree working + + Add a private function to WebFrame to dump the render tree as required + for the DumpRenderTree testing tool. + + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2008-08-12 Timothy Hatcher <timothy@apple.com> + + Add a stub for InspectorClient::setAttachedWindowHeight. + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::setAttachedWindowHeight): + Call notImplemented(). + * WebCoreSupport/InspectorClientGtk.h: + +2008-08-10 Alp Toker <alp@nuanti.com> + + Remove leftover qmake/GTK+ build files. + + * webkit/headers.pri: Removed. + +2008-08-02 Christian Dywan <christian@twotoasts.de> + + Reviewed by Eric Seidel. + + Remove webkit-marshal.list, which was made obsolete in #19742 + + * webkit/webkit-marshal.list: Removed. + +2008-08-01 Wouter Bolsterlee <uws@xs4all.nl> + + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=20035 + [GTK] Fix return value for webkit_web_view_go_to_back_forward_item() + + * webkit/webkitwebview.cpp: + +2008-07-30 Marco Barisione <marco.barisione@collabora.co.uk> + + Reviewed by Holger. + + http://bugs.webkit.org/show_bug.cgi?id=19742 + [GTK] Auto generate webkitmarshal.list + + Auto generate webkitmarshal.list from source files to reduce the + number of conflicts when merging git branches or when applying + patches. + Also rename webkit-marshal.* to webkitmarshal.* for consistency. + + * webkit/webkitwebframe.cpp: Include webkitmarshal.h instead of + webkit-marshal.h. + * webkit/webkitwebview.cpp: Ditto. + +2008-07-30 Gustavo Noronha Silva <gns@gnome.org> + + Reviewed by Sam. + + https://bugs.webkit.org/show_bug.cgi?id=20205 + Typo in comment for bracer ending block + + * webkit/webkitprivate.cpp: Typo fix in comment for the brace + that ends the WebKit namespace; WebCore -> WebKit + +2008-07-26 Mark Rowe <mrowe@apple.com> + + Build fix. Changes to accommodate newly named/signatured loading methods in WebCore. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + +2008-07-17 Christian Dywan <christian@twotoasts.de> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=19813 + [GTK] WebKit crashes on invalid settings notify callback + + * webkit/webkitwebview.cpp: Disconnect in webkit_web_view_finalize + +2008-07-08 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Christian Dywan. + + Replace 'const' with G_CONST_RETURN macro to make it flexible to + disable constness + + * webkit/webkitnetworkrequest.cpp: + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebhistoryitem.h: + +2008-06-18 Marco Barisione <marco.barisione@collabora.co.uk> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=19171 + [GTK] GTypes for enumerations + + Generate GTypes for public enumerations so they can be used as + properties. + + * GNUmakefile.am: Generate webkit-enum-types.cpp and + webkit-enum-types.h. + +2008-06-17 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp. + + [GTK] WebKitWebHistoryItem needs properties + https://bugs.webkit.org/show_bug.cgi?id=19558 + + Implement properties matching the existing accessors. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_property): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_property): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title): + +2008-06-15 Darin Adler <darin@apple.com> + + - give Frame object functions shorter names: scriptProxy() -> script(), + selectionController() -> selection(), animationController() -> animation() + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2008-06-15 Darin Adler <darin@apple.com> + + - undo bogus renaming done by the script + + * WebCoreSupport/ContextMenuClientGtk.cpp: + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebsettings.h: + +2008-06-15 Darin Adler <darin@apple.com> + + - new names for a few key JavaScriptCore files + + * WebCoreSupport/ContextMenuClientGtk.cpp: + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebsettings.h: + +2008-06-15 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + [GTK] Property setters do not call g_object_notify() + https://bugs.webkit.org/show_bug.cgi?id=18405 + + * webkit/webkitwebview.cpp: + +2008-06-15 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + Tiny documentation fix, s/capacity/limit + + * webkit/webkitwebbackforwardlist.cpp: + +2008-06-14 Darin Adler <darin@apple.com> + + Rubber stamped by Sam. + + - new names for kjs_binding.h and kjs_proxy.h + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * webkit/webkitwebframe.cpp: + +2008-06-14 Darin Adler <darin@apple.com> + + - fix build + + * webkit/webkitwebframe.cpp: Remove a bogus release() call. + +2008-06-14 Darin Adler <darin@apple.com> + + Reviewed by Sam. + + - more https://bugs.webkit.org/show_bug.cgi?id=17257 + start ref counts at 1 instead of 0 for speed + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createDocumentLoader): Use create instead of new. + * webkit/webkitwebframe.cpp: + (webkit_web_frame_new): Ditto. + (webkit_web_frame_init_with_web_view): Ditto. + +2008-06-13 Darin Adler <darin@apple.com> + + - try to fix build + + * WebCoreSupport/FrameLoaderClientGtk.h: Add missing argument. + +2008-06-13 Darin Adler <darin@apple.com> + + Reviewed by John Sullivan. + + - updated for addition of FormState argument to action policy functions + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + +2008-06-10 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker and Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=16676 + Apply GTK coding style to WebKit Gtk public headers + + * webkit/webkitnetworkrequest.h: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.h: + +2008-06-07 Jan Michael Alonzo <jmalonzo@webkit.org> + + Confirmed by Christian Dywan. + + Gtk build fix for r34432 + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_history_item_add): + (_WebKitWebHistoryItemPrivate::webkit_history_item_remove): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (WebKit::core): + +2008-06-07 Darin Adler <darin@apple.com> + + - try to fix build after HistoryItem changes + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): Use HistoryItem::create. + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): Ditto. I also + believe this fixes a memory leak in the old version. + +2008-06-07 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=17324 + Remove PLATFORM ifdefs from ContextMenu.cpp + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::ContextMenuClient): + (WebKit::ContextMenuClient::contextMenuDestroyed): + (WebKit::inputMethodsMenuItem): + (WebKit::): + (WebKit::insertControlCharacter): + (WebKit::unicodeMenuItem): + (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems): + * WebCoreSupport/ContextMenuClientGtk.h: + * webkit/webkitwebview.cpp: + +2008-06-05 Alp Toker <alp@nuanti.com> + + Add 'Since' documentation for API versioning functions. + + * webkit/webkitversion.cpp: + +2008-06-05 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=14141 + Please add a version to the Gtk port + + * webkit/webkit.h: + * webkit/webkitversion.cpp: Added. + * webkit/webkitversion.h.in: Added. + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + +2008-06-01 Alp Toker <alp@nuanti.com> + + Suggested by Christian Dywan. + + Use float literals for zoom values and improve documentation wording. + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + * webkit/webkitwebview.cpp: + +2008-06-01 Alp Toker <alp@nuanti.com> + + Reviewed by Oliver. + + Remove webkit_web_view_go_backward(), + webkit_web_view_can_go_backward(). These have been obsoleted by + the back() versions for quite a while. + + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-05-31 Alp Toker <alp@nuanti.com> + + Fix inconsistent zoom docs and enum name landed in r34249. Issue + noticed by Marco Barisione. + + * webkit/webkitwebview.cpp: + +2008-05-30 Carlos Martín Nieto <carlos@cmartin.tk> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=18383 + [GTK] The "hovering-over-link" signal arguments aren't documented. + + * webkit/webkitwebview.cpp: + +2008-05-29 Marco Barisione <marco@collabora.co.uk> + + Reviewed (and tweaked) by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=18281 + [GTK] add functions to set/get the zoom level + + * webkit/webkitwebsettings.cpp: + (_WebKitWebSettingsPrivate::): + (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): + (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): + (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): + * webkit/webkitwebview.cpp: Add functions to get and set the zoom + level. + * webkit/webkitwebview.h: Ditto. + * webkit/webkitprivate.h: + +2008-05-28 Alp Toker <alp@nuanti.com> + + Reviewed by Alexey Proskuryakov. + + http://bugs.webkit.org/show_bug.cgi?id=18704 + [gtk] cannot type letters with dead keys in textarea + + http://bugs.webkit.org/show_bug.cgi?id=14120 + [GDK] Support input methods + + Add support for input method composition. + + Remove some old hacks so we handle input method events more + consistently. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::imContextPreeditChanged): + (WebKit::EditorClient::setInputMethodState): + (WebKit::EditorClient::respondToChangedSelection): + (WebKit::EditorClient::handleInputMethodKeydown): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + (WebKit::EditorClient::textFieldDidBeginEditing): + (WebKit::EditorClient::textFieldDidEndEditing): + (WebKit::EditorClient::textDidChangeInTextField): + (WebKit::EditorClient::doTextFieldCommandFromEvent): + * webkit/webkitwebview.cpp: + +2008-05-25 Alp Toker <alp@nuanti.com> + + Reviewed by Niko. + + Drop WebView focus when the widget is focused out. + + * webkit/webkitwebview.cpp: + +2008-05-25 Sriram Neelakandan <sriram.neelakandan@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=18935 + [Gtk] Plugin Load crashes with NP_FULL mode + + Fix crash due to uninitialized variable. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + +2008-05-24 Alp Toker <alp@nuanti.com> + + https://bugs.webkit.org/show_bug.cgi?id=18825 + webkitgtk fails to build from source: "Database Tracker" has not been declared + + GTK+ fix for building without database support. + exceededDatabaseQuota() still needs to be present, just a no-op. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::exceededDatabaseQuota): + +2008-05-23 Alp Toker <alp@nuanti.com> + + GTK+ fixes for building without database support. + + * WebCoreSupport/ChromeClientGtk.cpp: + +2008-05-19 Alp Toker <alp@nuanti.com> + + Reviewed by Anders and Beth. + + http://bugs.webkit.org/show_bug.cgi?id=16495 + [GTK] Accessibility support with ATK/AT-SPI + + Initial ATK/AT-SPI accessibility support for the GTK+ port. + + * webkit/webkitwebview.cpp: + +2008-05-06 Christian Dywan <christian@twotoasts.de> + + Rubber stamped by Alp. + + Back out 17626. It wasn't ready for commit. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-05-01 Marc Ordinas i Llopis <marc.ordinasillopis@collabora.co.uk> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=14750 + Added support for NPAPI plugins on Gtk and Qt-x11 ports. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::createPlugin): + (WebKit::FrameLoaderClient::redirectDataToPlugin): + (WebKit::FrameLoaderClient::finishedLoading): + (WebKit::FrameLoaderClient::setMainDocumentError): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-04-30 Sean Egan <seanegan@gmail.com> + + Reviewed and modified by Holger. + + https://bugs.webkit.org/show_bug.cgi?id=17626 + Support setting background color and a 16-bit alpha channel. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-04-24 Dan Bernstein <mitz@apple.com> + + - build fix + + * webkit/webkitwebview.cpp: + +2008-04-24 Anders Carlsson <andersca@apple.com> + + Reviewed by Sam. + + Change some String arguments to be const references instead. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldInsertText): + * WebCoreSupport/EditorClientGtk.h: + +2008-04-23 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + Emit a warning about an unknown setting only if it is + not a valid property. Otherwise applications can't + subclass WebKitWebSettings to add new properties. + + * webkit/webkitwebview.cpp: + +2008-04-20 Simon Hausmann <hausmann@webkit.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=18578 + Share the printing code between the Gtk and the Qt port + + Share the printing code between the Gtk and the Qt port + and added printing to the Qt WebKit API. + + * webkit/webkitwebframe.cpp: Removed PrintContext in favour of + page/Printcontext.cpp/h + +2008-04-19 Alp Toker <alp@nuanti.com> + + Reviewed by Maciej. + + Enable visited link tracking by default at startup. + + With this patch, the GTK+ port rendering of Acid3 now matches the + reference page. + + * webkit/webkitprivate.cpp: + (WebKit::core): + (webkit_init): + +2008-04-11 Mark Rowe <mrowe@apple.com> + + Gtk build fix after r32231. + + * webkit/webkitwebview.cpp: Update to use contentRenderer. + +2008-04-18 Alp Toker <alp@atoker.com> + + Rubber-stamped by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=18218 + [Gtk] segfault when clicking on a disabled button + + Always use the main frame for mouse events (not the focused frame) + since it knows best how to get the event through to the right target. + + This also fixes a null crasher. + + * webkit/webkitwebview.cpp: + +2008-04-17 Alp Toker <alp@atoker.com> + + Rubber-stamped by Holger Freyther. + + Reduce hard-coded page-cache count to 3 based on research done for the + Mac port on value / page. + + We will need to make this more dynamic or configurable at some point + but for now it's best to keep closer to the behaviour before page + caching was enabled. + + Issue spotted by Mark Rowe. + + * webkit/webkitprivate.cpp: + (webkit_init): + +2008-04-17 Daniele Metilli <daniele.metilli@gmail.com> + + Reviewed by Eric. + + Fixed a typo in the copyright header. + + * webkit/webkitprivate.h: + +2008-04-14 Holger Freyther <zecke@selfish.org> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=18411 + Enable Page caching and create FrameViews on the fly + + Create the FrameView on the fly and cache pages + + - Keep a copy of the GtkAdjustment to be able to reuse it for the + FrameViews + - Do not initially create a FrameView and update the WebKit code to + cope with not having a view. + - Cache seven pages by default. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::canCachePage): + (WebKit::FrameLoaderClient::savePlatformDataToCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * webkit/webkitprivate.cpp: + (webkit_init): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2008-04-10 Mario Bensi <mbensi@pleyo.com> + + Reviewed by Alp Toker. + + https://bugs.webkit.org/show_bug.cgi?id=18400 + Database example doesn't work on Gtk port + + Fix quota in ChromeClient + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::exceededDatabaseQuota): + +2008-04-08 Adam Roben <aroben@apple.com> + + Move callOnMainThread to WTF + + Reviewed by Alexey Proskuryakov. + + * webkit/webkitprivate.cpp: Updated #include. + (webkit_init): Changed to call KJS::initializeThreading. + +2008-04-06 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + Fix webkit_web_view_get_transparent() return value. + + * webkit/webkitwebview.cpp: + +2008-03-31 Jasper Bryant-Greene <jasper@unix.geek.nz> + + Reviewed by Darin Adler. + + Resolves http://bugs.webkit.org/show_bug.cgi?id=18010 + "WebKitNetworkRequestPrivate is defined in two places unnecessarily" + + Removed unnecessary definition of WebKitNetworkRequestPrivate in + webkitprivate.h + + * webkit/webkitprivate.h: + +2008-03-25 Brady Eidson <beidson@apple.com> + + Reviewed by Darin + + Remove newly obsolete FrameLoaderClient methods + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-03-20 Alp Toker <alp@atoker.com> + + GTK+ build fix. Back out r31183. This patch also introduced API style + issues. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + * webkit/headers.pri: + * webkit/webkit-marshal.list: + * webkit/webkitdefines.h: + * webkit/webkitnavigationaction.cpp: Removed. + * webkit/webkitnavigationaction.h: Removed. + * webkit/webkitprivate.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-03-20 Jasper Bryant-Greene <jasper@unix.geek.nz> + + Reviewed and tweaked by Anders. + + Resolves http://bugs.webkit.org/show_bug.cgi?id=16092 + "[GTK] Middle-mouse click should allow opening a URL in a new tab" + + Created WebKitNavigationAction object exported through the API. The + navigation-requested signal provides this object as context for the + requested navigation, allowing the application to decide what to do + with the navigation based on which mouse button was used, which + modifier keys were held down, etc. This allows, for example, the + application to open links in a new tab when either middle-click or + control-click are used to initiate the navigation. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + * webkit/headers.pri: + * webkit/webkit-marshal.list: + * webkit/webkitdefines.h: + * webkit/webkitnavigationaction.cpp: Added. + (webkit_navigation_action_finalize): + (webkit_navigation_action_class_init): + (webkit_navigation_action_init): + (webkit_navigation_action_get_button): + (webkit_navigation_action_get_modifier_flags): + (webkit_navigation_action_get_navigation_type): + (webkit_navigation_action_get_original_url): + * webkit/webkitnavigationaction.h: Added. + * webkit/webkitprivate.cpp: + (WebKit::kit): + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-03-18 Rodney Dawes <dobey@wayofthemonkey.com> + + Reviewed and landed by jhoneycutt. + + Update to check if the MIME type is supported by a plugin. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (FrameLoaderClient::objectContentType): + +2008-03-18 Rodney Dawes <dobey@wayofthemonkey.com> + + Reviewed by Jon Honeycutt. + + Update setContainingWindow() calls to pass a GtkWidget. + + * webkit/webkitwebframe.cpp: + (webkit_web_frame_new): + (webkit_web_frame_init_with_web_view): + +2008-03-13 Rodney Dawes <dobey@wayofthemonkey.com> + + Fix GTK+ build for SharedBuffer changes. + + * webkit/webkitwebview.cpp: + (webkit_web_view_load_string): + +2008-03-12 Tommi Komulainen <tommi.komulainen@iki.fi> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=17799 + WebView signals should use more specific types + + * webkit/webkitwebview.cpp: Use WEBKIT_TYPE_WEB_FRAME argument + type in "script-alert", "script-confirm", "script-script-prompt" + signals so that it gets more clearly documented rather than just + plain GObject. + +2008-03-10 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + Fix "missing braces" compiler warning. + + * webkit/webkitwebview.cpp: + +2008-03-04 Sam Weinig <sam@webkit.org> + + Reviewed by Mark Rowe. + + - Remove all unnecessary includes of JSDOMWindowBase.h, we prefer including + JSDOMWindow.h + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * webkit/webkitwebframe.cpp: + +2008-03-03 Sam Weinig <sam@webkit.org> + + GTK+ build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + +2008-03-03 Alp Toker <alp@atoker.com> + + Fix the GTK+ build following breakage introduced in r30712. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + +2008-03-02 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Split the WebKit GTK+ build out of the WebCore build and change the + shared object name to match the package name. + + * webkit.pc.in: + +2008-02-27 Adam Roben <aroben@apple.com> + + Attempt to fix the GTK+ build + + * webkit/webkitwebframe.cpp: + +2008-02-24 Darin Adler <darin@apple.com> + + Reviewed by Sam. + + - remove separate client calls for "standard" and "reload' history + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::updateGlobalHistory): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2008-02-23 Alexey Proskuryakov <ap@webkit.org> + + Build fix. + + * webkit/webkitprivate.cpp: + (webkit_init): Renamed initializeThreading to initializeThreadingAndMainThread. + +2008-02-18 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=17312 + [GTK] Webview Transparent Background + + Add support for WebView background transparency. + + * webkit/webkitprivate.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-02-18 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Implement webkit_web_view_get_focused_frame() + + Equivalent to selectedFrame in the Mac API. + + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-02-17 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Reviewed by Mark Rowe. + + Fix a crash introduced in changeset #29985 by moving the dereference to after + the null check. + + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + +2008-02-15 Alp Toker <alp@atoker.com> + + Fix the GTK+ build following breakage introduced in r30243. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::objectContentType): + +2008-02-15 Darin Adler <darin@apple.com> + + - another try at fixing the build + + * webkit/webkitwebview.cpp: Added some explicit conversions to KURL. + +2008-02-14 Darin Adler <darin@apple.com> + + * webkit/webkitwebframe.cpp: Removed DeprecatedString use to try to keep it building. + * webkit/webkitwebview.cpp: Ditto. + +2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Alp. + + * Make the handling of the coreFrame consistent. We construct the coreFrame + at the beginning and it will live until the end. Change the g_return_(val_)if + to ASSERTs as having a 0 coreFrame can never happen. + + * webkit/webkitwebframe.cpp: + (PrintContext::webkit_web_frame_print): + +2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Alp. + + * Make sure that the WebCore::Frame is living as long as the WebKitWebFrame + wrapped around it. All current calls to WebCore::Frame from within the + WebKitWebFrame are safe, even in the case where the WebCore::Frame is already + detached from the WebCore::Page. + * For the mainFrame the WebKitWebView is holding the initial reference and + will unref on destruction. + * For sub-frames the FramerLoaderClientGtk.cpp will do the unrefing when the + frame gets detached from the parent. + * Make sure FrameLoader::detachFromParent gets called by calling FrameLoader::detachChildren + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::detachedFromParent4): + * webkit/webkitprivate.cpp: + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebview.cpp: + +2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Alp. + + WebCore::Frame is RefCounted, do not manually delete it! + + * webkit/webkitwebframe.cpp: + +2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Alp. + + * Plug a leak + + * webkit/webkitwebframe.cpp: + +2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Alp. + + * Update the Copyright Information + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * webkit/webkitprivate.h: + * webkit/webkitwebframe.cpp: + +2008-02-13 Alp Toker <alp@atoker.com> + + Reviewed by Adam Roben. + + Fix very small, upside down, inside out text on GTK+/DirectFB. + + Based on an initial patch by Sriram Neelakandan <sriram.neelakandan@gmail.com> + + Test the result of gdk_screen_get_resolution() and use a default + fallback in case of failure. + + Also remove an unhelpful runtime warning. + + * webkit/webkitwebview.cpp: + +2008-02-08 Pierre-Luc Beaudoin <pierre-luc.beaudoin@collabora.co.uk> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=17009 + [Gtk] Webkit strips accents from some dead-key combinations + + KeyEvents have to go through the gtk input method. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::EditorClient::doTextFieldCommandFromEvent): + +2008-02-05 Mark Rowe <mrowe@apple.com> + + Reviewed by Alp Toker. + + Fix warnings seen on the Gtk port by declaring variables and using constants of the correct types. + + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item): + * webkit/webkitwebhistoryitem.cpp: + * webkit/webkitwebview.cpp: + +2008-02-04 Christian Dywan <christian@imendio.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=17065 + [GTK] Use a consistent coding style + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + (WebKit::EditorClient::textFieldDidEndEditing): + * webkit/webkitdefines.h: + * webkit/webkitnetworkrequest.cpp: + (_WebKitNetworkRequestPrivate::webkit_network_request_finalize): + (_WebKitNetworkRequestPrivate::webkit_network_request_class_init): + (_WebKitNetworkRequestPrivate::webkit_network_request_init): + (_WebKitNetworkRequestPrivate::webkit_network_request_new): + (_WebKitNetworkRequestPrivate::webkit_network_request_set_uri): + (_WebKitNetworkRequestPrivate::webkit_network_request_get_uri): + * webkit/webkitnetworkrequest.h: + * webkit/webkitprivate.cpp: + (WebKit::getViewFromFrame): + (WebKit::core): + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_new_with_web_view): + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.cpp: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri): + (WebKit::core): + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-02-04 Alp Toker <alp@atoker.com> + + Rubber-stamped by Mark Rowe. + + Remove all trailing whitespace in the GTK+ port and related + components. + + * WebCoreSupport/DragClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.h: + * WebCoreSupport/InspectorClientGtk.h: + * WebCoreSupport/PasteboardHelperGtk.h: + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.cpp: + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_length): + * webkit/webkitwebhistoryitem.cpp: + (_WebKitWebHistoryItemPrivate::webkit_history_items): + (_WebKitWebHistoryItemPrivate::webkit_history_item_add): + (_WebKitWebHistoryItemPrivate::webkit_history_item_remove): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time): + (WebKit::kit): + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebview.cpp: + * webkit/webkitwebview.h: + +2008-02-03 Christian Dywan <christian@imendio.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=17046 + [GTK] Context menu fixes and customisation suport + + * webkit/webkitwebview.cpp: + +2008-01-31 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Fix the pkg-config file to follow GTK+ package naming and versioning + conventions. + + Remove unneeded dependency listings. + + * WebKitGtk.pc.in: Removed. + * webkit.pc.in: Copied from WebKit/gtk/WebKitGtk.pc.in. + +2008-01-31 Alp Toker <alp@atoker.com> + + Rubber-stamped by Adam Roben. + + http://bugs.webkit.org/show_bug.cgi?id=17006 + [GTK] Header path should be webkit/webkit.h + + Move the GTK+ API sources as needed and update the build systems. + + * WebView: Removed. + * WebView/headers.pri: Removed. + * WebView/webkit-marshal.list: Removed. + * WebView/webkit.h: Removed. + * WebView/webkitdefines.h: Removed. + * WebView/webkitnetworkrequest.cpp: Removed. + * WebView/webkitnetworkrequest.h: Removed. + * WebView/webkitprivate.cpp: Removed. + * WebView/webkitprivate.h: Removed. + * WebView/webkitwebbackforwardlist.cpp: Removed. + * WebView/webkitwebbackforwardlist.h: Removed. + * WebView/webkitwebframe.cpp: Removed. + * WebView/webkitwebframe.h: Removed. + * WebView/webkitwebhistoryitem.cpp: Removed. + * WebView/webkitwebhistoryitem.h: Removed. + * WebView/webkitwebsettings.cpp: Removed. + * WebView/webkitwebsettings.h: Removed. + * WebView/webkitwebview.cpp: Removed. + * WebView/webkitwebview.h: Removed. + * webkit: Copied from WebKit/gtk/WebView. + * webkit/webkit.h: + * webkit/webkitnetworkrequest.h: + * webkit/webkitprivate.h: + * webkit/webkitwebbackforwardlist.h: + * webkit/webkitwebframe.h: + * webkit/webkitwebhistoryitem.h: + * webkit/webkitwebsettings.h: + * webkit/webkitwebview.h: + +2008-01-27 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=14811 + [gtk] [request] add a webkit_gtk_page_go_to_history_item function + + implement back/forward list and history item + + * WebView/headers.pri: + * WebView/webkit.h: + * WebView/webkitprivate.cpp: + * WebView/webkitprivate.h: + * WebView/webkitwebbackforwardlist.cpp: Added. + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_dispose): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_class_init): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_init): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_new_with_web_view): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_forward): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_back): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_to_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_current_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_nth_item): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_length): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_length): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_limit): + (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_set_limit): + * WebView/webkitwebbackforwardlist.h: Added. + * WebView/webkitwebhistoryitem.cpp: Added. + (_WebKitWebHistoryItemPrivate::webkit_history_items): + (_WebKitWebHistoryItemPrivate::webkit_history_item_add): + (_WebKitWebHistoryItemPrivate::webkit_history_item_remove): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_init): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri): + (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time): + (WebKit::core): + (WebKit::kit): + * WebView/webkitwebhistoryitem.h: Added. + * WebView/webkitwebview.cpp: + * WebView/webkitwebview.h: + +2008-01-25 Ori Bernstein <ori@eigenstate.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16795 + WebKitGtk crashes when there is no focused Frame + + Add a null check. focusedFrame() isn't used directly anywhere else so + this is the only case that needs to be fixed. + + * WebView/webkitwebview.cpp: + +2008-01-22 Christian Dywan <christian@imendio.com> + + Reviewed by Alp Toker. + + [GTK] API: WebKitWebSettings is not usable + http://bugs.webkit.org/show_bug.cgi?id=16219 + + Implement WebKitWebSettings. + + * WebView/headers.pri: + * WebView/webkit.h: + * WebView/webkitprivate.cpp: + * WebView/webkitprivate.h: + * WebView/webkitsettings.cpp: Removed. + * WebView/webkitsettings.h: Removed. + * WebView/webkitwebsettings.cpp: Added. + * WebView/webkitwebsettings.h: Added. + * WebView/webkitwebview.cpp: + * WebView/webkitwebview.h: + +2008-01-21 Alp Toker <alp@atoker.com> + + GTK+ build fix for breakage introduced in r29698. + + * WebCoreSupport/ChromeClientGtk.h: + +2008-01-21 Darin Adler <darin@apple.com> + + Reviewed by John Sullivan. + + - updated for changes to database functions + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::exceededDatabaseQuota): + * WebCoreSupport/ChromeClientGtk.h: + * WebView/webkitprivate.cpp: + (webkit_init): + +2008-01-20 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Attach the widget's style to its window and set the background to the + base background to avoid black flicker when repainting. This is + similar to what GtkTextView does. + + * WebView/webkitwebview.cpp: + +2008-01-19 Christian Dywan <christian@imendio.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16882 + [GTK] ChromeClientGtk is incompete + + Implement these functions. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::windowRect): + (WebKit::ChromeClient::pageRect): + (WebKit::ChromeClient::scaleFactor): + (WebKit::ChromeClient::focus): + (WebKit::ChromeClient::unfocus): + (WebKit::ChromeClient::canTakeFocus): + (WebKit::ChromeClient::takeFocus): + (WebKit::ChromeClient::canRunBeforeUnloadConfirmPanel): + +2008-01-18 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16910 + [GTK] REGRESSION: keyboard cursor doesn't blink + + http://bugs.webkit.org/show_bug.cgi?id=16863 + [GTK] REGRESSION: tab focusing doesn't work + + * WebView/webkitwebview.cpp: + (webkit_web_view_focus_in_event): Added. Set the active frame. + (webkit_web_view_class_init): + +2008-01-16 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=16218 + [GTK] API: Should this entry point be called go_back rather than go_backward? + + Obsolete 'backward' terminology in API in favour of 'back'. Introduce + step-based back/forward functions. + + Document more functions. + + * WebView/webkitdefines.h: + * WebView/webkitwebview.cpp: + * WebView/webkitwebview.h: + +2008-01-10 Maciej Stachowiak <mjs@apple.com> + + Reviewed by Sam. + + - remove SecurityOriginData and fold its functionality into SecurityOrigin + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::requestQuotaIncreaseForNewDatabase): + (WebKit::ChromeClient::requestQuotaIncreaseForDatabaseOperation): + * WebCoreSupport/ChromeClientGtk.h: + +2008-01-09 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16802 + [GTK] Missing gtk properties + + Add missing properties to WebKitViewFrame and WebKitWebView. + + * WebView/webkitprivate.h: add some useful defines for param specs + * WebView/webkitwebframe.cpp: + (webkit_web_frame_get_property): added + (webkit_web_frame_class_init): add name, title and uri read-only properties + * WebView/webkitwebview.cpp: + (webkit_web_view_get_property): add editable property read + (webkit_web_view_set_property): added for editable property write + (webkit_web_view_class_init): add read-write editable property + +2008-01-03 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16654 + [GTK] Signal "navigation-requested" does not react correctly on + return TRUE from callbacks + + * WebView/webkitwebview.cpp: use our own accumulator for signals + returning WebKitNavigationResponse. The emission will be stopped + when any callback returns anything but + WEBKIT_NAVIGATION_RESPONSE_ACCEPT. + +2008-01-02 Holger Hans Peter Freyther <zecke@selfish.org> + + Rubber stamped by Darin Adler. + + Coding Style fix. Do not use an else because we use a return in the + if branch. + + * WebView/webkitwebview.cpp: + +2008-01-02 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16115 + [GTK] ContextMenu and ContextMenuItem lacks an implementation + + Add context menu support. + + Based on a patch by Holger Freyther. + + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems): + * WebView/webkitprivate.h: + * WebView/webkitwebview.cpp: + +2007-12-29 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16669 + autotools update and fixes + + pkgconfig file and icon database inclusion fix + + * WebKitGtk.pc.in: Remove ICU_FLAGS from Cflags + * WebView/webkitprivate.cpp: Guard ICONDATABASE inclusions + +2007-12-28 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16642 + [GTK] webkit_web_view_has_selection returns the opposite result + + Invert the return value. + + * WebView/webkitwebview.cpp: + +2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16390 + Use autotools or GNU make as the build system for the GTK port + + * WebKitGtk.pc.in: Added. + +2007-12-24 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/attachment.cgi?id=18099 + There are no NULL checks for strings in public api + + Add missing NULL checks for string parameters. + + Provide sensible defaults when NULL is passed for the optional + parameters in webkit_web_view_load_string(). UTF-8 is the default + encoding used by GLib and text/html is a reasonable default content + type. + + * WebView/webkitnetworkrequest.cpp: + * WebView/webkitwebview.cpp: + +2007-12-22 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + Use webView, web_view, etc for variable names instead of page, which + was left over from the old API. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + (WebKit::EditorClient::textFieldDidBeginEditing): + (WebKit::EditorClient::textFieldDidEndEditing): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::postProgressStartedNotification): + (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification): + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + (WebKit::FrameLoaderClient::windowObjectCleared): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + +2007-12-22 Alp Toker <alp@atoker.com> + + GTK+ build fix + + GTK_TARGET_OTHER_APP is not available in older GTK+ versions. Pass + empty target flags for now. + + Check GTK+, not GLib versions, since they are different. + + * WebView/webkitwebview.cpp: + +2007-12-22 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16311 + [Gtk] Copy rich text to clipboard as text/plain and text/html. + + Add copy and paste targets for WebView and implement + WebCore::PasteboardHelper. + + * WebCoreSupport/PasteboardHelperGtk.cpp: Added. + (WebKit::PasteboardHelperGtk::getClipboard): + (WebKit::PasteboardHelperGtk::getCopyTargetList): + (WebKit::PasteboardHelperGtk::getPasteTargetList): + * WebCoreSupport/PasteboardHelperGtk.h: Added. + * WebView/webkitprivate.cpp: + (webkit_init): set the PasteboardHelperGtk as WebCore::Pasteboard helper + * WebView/webkitprivate.h: + (_WebKitWebViewPrivate::copy_target_list): added + (_WebKitWebViewPrivate::paste_target_list): added + * WebView/webkitwebview.cpp: + (webkit_web_view_get_property): added + (webkit_web_view_finalize): + (webkit_web_view_class_init): create properties for COPY_TARGET and PASTE_TARGET and create the copy and paste target lists + (webkit_web_view_get_copy_target_list): added + (webkit_web_view_get_paste_target_list): added + * WebView/webkitwebview.h: + (webkit_web_view_get_copy_target_list): added + (webkit_web_view_get_paste_target_list): added + +2007-12-22 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + Follow up to http://bugs.webkit.org/show_bug.cgi?id=16144 + + * WebView/webkitwebview.cpp: + Fix signal id arguments for g_signal_emit in + clipboard functions. + +2007-12-21 Alp Toker <alp@atoker.com> + + Documentation typo fix: s/wether/whether + + * WebView/webkitwebview.cpp: + +2007-12-21 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16144 + [GTK] Clipboard/ selection handling functions + + * WebView/webkitprivate.h: + * WebView/webkitwebview.cpp: + * WebView/webkitwebview.h: + +2007-12-19 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16222 + [GTK] Implement inline search and highlighting of matching strings. + + * WebView/webkitwebview.cpp: + * WebView/webkitwebview.h: + +2007-12-19 Alp Toker <alp@atoker.com> + + Reviewed by Holger Freyther. + + Delete when Destroy functions are called to avoid leaks + + This matches the Mac port. + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/InspectorClientGtk.cpp: + +2007-12-14 Juan A. Suarez Romero <jasuarez@igalia.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16042 + [GTK] Eliminate webkit_init() + + Move webkit initialization to WebView class init. + + * WebView/headers.pri: + * WebView/webkit.h: + * WebView/webkitglobal.cpp: Removed. + * WebView/webkitglobal.h: Removed. + * WebView/webkitprivate.cpp: + (WebKit::webkit_init): + * WebView/webkitprivate.h: + * WebView/webkitwebframe.cpp: + * WebView/webkitwebview.cpp: + +2007-12-17 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=13542 + gdklauncher doesnt change URL in adress GTKEntry. + + Let DOMDocument observers do their work before emitting title-changed. + The load-committed signal has been added for both the view and the frame. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): emit title-changed + (WebKit::FrameLoaderClient::setTitle): set private title + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): update the frame uri and emit load-committed + * WebView/webkit-marshal.list: + * WebView/webkitprivate.h: + (_WebKitWebFramePrivate): rename location to uri + * WebView/webkitwebframe.cpp: + (webkit_web_frame_get_location): renamed to *_get_uri + (webkit_web_frame_get_uri): + (webkit_web_frame_real_title_changed): removed (see FrameLoaderClient::setTitle) + (webkit_web_frame_class_init): pass the frame and the title in title-changed, not the uri + (webkit_web_frame_finalize): + * WebView/webkitwebframe.h: + (_WebKitWebFrameClass): removed title_changed + * WebView/webkitwebview.cpp: + (webkit_web_view_class_init): pass only the title in title-changed + +2007-12-14 Alp Toker <alp@atoker.com> + + Fix inconsistent indentation in the license header. Maciej was right! + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + +2007-12-14 Alp Toker <alp@atoker.com> + + Reviewed by Maciej. + + http://bugs.webkit.org/show_bug.cgi?id=16432 + [GTK] Update license headers + + Consent has been given by the authors of these files to change license + to the LGPL as outlined in the bug report. + + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/DragClientGtk.cpp: + * WebCoreSupport/EditorClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::makeRepresentation): + (WebKit::FrameLoaderClient::forceLayout): + (WebKit::FrameLoaderClient::forceLayoutForNonHTML): + (WebKit::FrameLoaderClient::setCopiesOnScroll): + (WebKit::FrameLoaderClient::detachedFromParent1): + (WebKit::FrameLoaderClient::detachedFromParent2): + (WebKit::FrameLoaderClient::detachedFromParent3): + (WebKit::FrameLoaderClient::detachedFromParent4): + (WebKit::FrameLoaderClient::loadedFromCachedPage): + (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents): + (WebKit::FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidCancelClientRedirect): + (WebKit::FrameLoaderClient::dispatchWillPerformClientRedirect): + (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage): + (WebKit::FrameLoaderClient::dispatchWillClose): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad): + (WebKit::FrameLoaderClient::dispatchDidFirstLayout): + (WebKit::FrameLoaderClient::dispatchShow): + (WebKit::FrameLoaderClient::cancelPolicyCheck): + (WebKit::FrameLoaderClient::dispatchDidLoadMainResource): + (WebKit::FrameLoaderClient::revertToProvisionalState): + (WebKit::FrameLoaderClient::clearUnarchivingState): + (WebKit::FrameLoaderClient::willChangeTitle): + (WebKit::FrameLoaderClient::didChangeTitle): + (WebKit::FrameLoaderClient::finalSetupForReplace): + (WebKit::FrameLoaderClient::setDefersLoading): + (WebKit::FrameLoaderClient::isArchiveLoadPending): + (WebKit::FrameLoaderClient::cancelPendingArchiveLoad): + (WebKit::FrameLoaderClient::clearArchivedResources): + (WebKit::FrameLoaderClient::canHandleRequest): + (WebKit::FrameLoaderClient::canShowMIMEType): + (WebKit::FrameLoaderClient::representationExistsForURLScheme): + (WebKit::FrameLoaderClient::generatedMIMETypeForURLScheme): + (WebKit::FrameLoaderClient::dispatchDidReceiveContentLength): + (WebKit::FrameLoaderClient::dispatchDidFinishLoading): + (WebKit::FrameLoaderClient::dispatchDidFailLoading): + (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): + (WebKit::FrameLoaderClient::download): + (WebKit::FrameLoaderClient::cancelledError): + (WebKit::FrameLoaderClient::blockedError): + (WebKit::FrameLoaderClient::cannotShowURLError): + (WebKit::FrameLoaderClient::interruptForPolicyChangeError): + (WebKit::FrameLoaderClient::cannotShowMIMETypeError): + (WebKit::FrameLoaderClient::fileDoesNotExistError): + (WebKit::FrameLoaderClient::shouldFallBack): + (WebKit::FrameLoaderClient::willUseArchive): + (WebKit::FrameLoaderClient::canCachePage): + (WebKit::FrameLoaderClient::dispatchCreatePage): + (WebKit::FrameLoaderClient::dispatchUnableToImplementPolicy): + (WebKit::FrameLoaderClient::setMainDocumentError): + (WebKit::FrameLoaderClient::startDownload): + (WebKit::FrameLoaderClient::updateGlobalHistoryForStandardLoad): + (WebKit::FrameLoaderClient::updateGlobalHistoryForReload): + (WebKit::FrameLoaderClient::savePlatformDataToCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * WebCoreSupport/InspectorClientGtk.cpp: + * WebView/webkitwebview.cpp: + +2007-12-14 Darin Adler <darin@apple.com> + + Reviewed by Alexey. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): Changed to use Editor::command + instead of Editor::execCommand. + * WebView/webkitwebview.cpp: Ditto. + +2007-12-12 Brady Eidson <beidson@apple.com> + + Reviewed by Sam Weinig + + As part of doing some CachedPage and client cleanup, keep GTK building + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::savePlatformDataToCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage): + (WebKit::FrameLoaderClient::transitionToCommittedForNewPage): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-12-12 Alp Toker <alp@atoker.com> + + Reviewed by Holger Freyther. + + http://bugs.webkit.org/show_bug.cgi?id=15576 + [GTK] Printing support + + Add printing support. + + The API will be kept internal for the time being, but printing can now + be triggered by Web pages or the JSC API using JavaScript. + + The print spooler and pagination code is fairly abstract and could be + shared by other ports including Win and Qt once complete. It doesn't + have header/footer support yet. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::print): + * WebView/webkitprivate.h: + * WebView/webkitwebframe.cpp: + (PrintContext::begin_print): + (PrintContext::draw_page): + (PrintContext::end_print): + (PrintContext::webkit_web_frame_print): + +2007-12-12 Sam Weinig <sam@webkit.org> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didChangeTitle): + +2007-12-12 Sam Weinig <sam@webkit.org> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + +2007-12-11 George Wright <george.wright@collabora.co.uk> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=14120 + [GDK] Support input methods + + This patch adds infrastructure for input method support. + + It also adds Hildon features for the Maemo mobile platform sufficient + to support the virtual keyboard. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::imContextCommitted): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::~EditorClient): + (WebKit::EditorClient::textFieldDidBeginEditing): + (WebKit::EditorClient::textFieldDidEndEditing): + * WebCoreSupport/EditorClientGtk.h: + * WebView/webkitprivate.h: + * WebView/webkitwebview.cpp: + +2007-12-07 Alexey Proskuryakov <ap@webkit.org> + + Reviewed by Darin Adler. + + <rdar://problem/5535636> + Have to press 4 times instead of 2 times to get the expected result of ^^ with german keyboard. + + http://bugs.webkit.org/show_bug.cgi?id=13916 + JavaScript detects Tab as a character input on a textfield validation + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeyboardEvent): + (WebKit::EditorClient::handleInputMethodKeydown): + * WebCoreSupport/EditorClientGtk.h: + Updated for cross-platform changes as much as it was possible without a gtk build environment. + +2007-12-08 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16346 + [GTK] Some webview parts must use the focused frame. + + Also update some old code. + + * WebView/webkitprivate.cpp: + (getFrameFromView): removed + + * WebView/webkitprivate.h: + (getFrameFromView): removed + + * WebView/webkitwebview.cpp: + (webkit_web_view_expose_event): + (webkit_web_view_key_press_event): use focused frame + (webkit_web_view_key_release_event): use focused frame + (webkit_web_view_button_press_event): + (webkit_web_view_button_release_event): + (webkit_web_view_motion_event): + (webkit_web_view_scroll_event): + (webkit_web_view_size_allocate): + (webkit_web_view_set_scroll_adjustments): + (webkit_web_view_execute_script): + (webkit_web_view_stop_loading): + (webkit_web_view_load_string): + (webkit_web_view_reload): + (webkit_web_view_open): + (webkit_web_view_can_go_forward): + (webkit_web_view_can_go_backward): + (webkit_web_view_go_forward): + (webkit_web_view_go_backward): + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeypress): fix for page up and page down keys for editable contents + +2007-12-07 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16333 + [GTK] Key bindings must work with focused frames. + + There are still more cases where getFrameFromView() is mis-used that + need to be fixed, but this is a good start. + + * WebView/webkitwebview.cpp: + (webkit_web_view_real_select_all): + (webkit_web_view_real_cut_clipboard): + (webkit_web_view_real_copy_clipboard): + (webkit_web_view_real_paste_clipboard): + +2007-12-06 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16329 + [GTK] Two small cleanups + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::createWindow): + (WebKit::ChromeClient::addMessageToConsole): + (WebKit::ChromeClient::runJavaScriptAlert): + (WebKit::ChromeClient::runJavaScriptConfirm): + (WebKit::ChromeClient::runJavaScriptPrompt): + (WebKit::ChromeClient::setStatusbarText): + (WebKit::ChromeClient::mouseDidMoveOverElement): + (WebKit::ChromeClient::setToolTip): + * WebCoreSupport/ChromeClientGtk.h: + * WebView/webkitprivate.cpp: + (WebKit::kit): + s/m_webPage/m_webView/ + * WebView/webkitwebview.cpp: + Chain up to the parent class to activate bindings instead + of doing it explicitely. + +2007-12-06 Holger Hans Peter Freyther <holger.freyther@trolltech.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=16173 + Licensing change + + Change license from BSD to LGPL. + + * WebCoreSupport/ChromeClientGtk.h: + * WebView/webkitdefines.h: + * WebView/webkitglobal.cpp: + * WebView/webkitglobal.h: + * WebView/webkitnetworkrequest.cpp: + * WebView/webkitnetworkrequest.h: + * WebView/webkitprivate.cpp: + * WebView/webkitprivate.h: + * WebView/webkitsettings.cpp: + * WebView/webkitsettings.h: + * WebView/webkitwebframe.cpp: + * WebView/webkitwebframe.h: + * WebView/webkitwebview.h: + +2007-12-05 Michael Natterer <mitch@imendio.com> + + Reviewed by Alp Toker. + + * WebView/webkitwebview.cpp: split key and button event handlers + into separate press and release functions. + +2007-12-05 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + Handle events for Home and End keys. + + * WebView/webkitwebview.cpp: + (webkit_web_view_key_event): + * WebCoreSupport/EditorClientGtk.cpp: + (EditorClient::handleKeypress): + +2007-12-05 Michael Natterer <mitch@imendio.com> + + Reviewed by Alp Toker. + + * WebView/webkitwebview.cpp + * WebCoreSupport/ChromeClientGtk.cpp + * WebCoreSupport/FrameLoaderClientGtk.cpp: canonicalize signal names. + +2007-12-04 Darin Adler <darin@apple.com> + + Reviewed by Kevin Decker. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: Removed obsolete privateBrowsingEnabled. + * WebCoreSupport/FrameLoaderClientGtk.h: Ditto. + +2007-12-04 Michael Natterer <mitch@imendio.com> + + Reviewed by Alp Toker. + + * WebView/webkitwebframe.cpp: don't redeclare the marshaller + prototype but simply include "webkit-marshal.h" now that its build + is fixed. + +2007-12-04 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + Fix a regression in key press propagation in r28386. + + Fix indentation (was off by two spaces). + + * WebView/webkitwebview.cpp: + +2007-12-04 Luca Bruno <lethalman88@gmail.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15911 + [GTK] Use GtkBindingSet to make key bindings user-configurable + + This patch doesn't cover the full range of bindings, only the ones + that seem obviously correct and have clear public API. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeypress): do not handle clipboard operations and select-all + * WebView/webkitwebview.cpp: add cut, copy, paste and select-all signals and allow binding sets (issue #15911 and #16144) + * WebView/webkitwebview.h: + +2007-12-04 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15561 + GTK port needs DumpRenderTree implementation + + Start work on the GTK+ DRT. + + Add a couple of proposed new API entry points. They are currently for + internal use only by DRT and not in the public headers. + + * WebView/webkitprivate.h: + * WebView/webkitwebframe.cpp: + +2007-12-03 Dan Bernstein <mitz@apple.com> + + Reviewed by Dave Hyatt. + + - fix <rdar://problem/5346452> Resize event doesn't fire on body element inside a frame + + * WebView/webkitwebview.cpp: Remove the call to sendResizeEvent() since + FrameView sends it now. + +2007-12-03 Alp Toker <alp@atoker.com> + + globalObject() GTK+ build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + +2007-12-03 Geoffrey Garen <ggaren@apple.com> + + GTK Build fix: get globalExec from the right place. + + * WebView/webkitwebframe.cpp: + +2007-12-01 Alp Toker <alp@atoker.com> + + Reviewed by Adam Roben. + + Wrap type definitions in webkitdefines.h with G_BEGIN_DECLS, which + takes care of extern "C". + + Introduce a webkit.h convenience header. + + Remove another left-over from the old API. + + * WebView/headers.pri: + * WebView/webkit.h: Added. + * WebView/webkitdefines.h: + +2007-12-01 Alp Toker <alp@atoker.com> + + Reviewed by Adam Roben. + + http://bugs.webkit.org/show_bug.cgi?id=15687 + [Gtk] Allow API clients to interact with JavaScript in web pages + + Include the necessary JavaScriptCore headers directly in the public + API headers. + + This is the last of a series of changes needed to allow GTK+ + applications to access the JS API. + + Until http://bugs.webkit.org/show_bug.cgi?id=16029 is resolved, + developers will still have to include the individual JS API headers + individually if they want to use it in their applications. + + Patch also removes some old legacy use of GDK that was in + WebKitWebFrame. No ABI change. + + * WebView/webkitdefines.h: + * WebView/webkitwebframe.h: + * WebView/webkitwebview.h: + +2007-11-30 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Fix for GTK+ Debug build breakage introduced in r28273. + + * WebView/webkitprivate.cpp: + (WebKit::kit): + +2007-11-30 Alp Toker <alp@atoker.com> + + Reviewed by Adam Roben. + + http://bugs.webkit.org/show_bug.cgi?id=15691 + [GTK] Public API does not follow GTK+ conventions + + Refactor the WebKit/GTK+ public API. Changes: + WebKitPage -> WebKitWebView + WebKitFrame -> WebKitWebFrame + + Public API source and header names have been updated to mirror the API + changes. + + The API is now kept in WebKit/gtk/WebView to match other ports in the + same class such as Mac and Win. + + API/ABI-breaking change. + + * Api: Removed. + * Api/headers.pri: Removed. + * Api/webkitgtk-marshal.list: Removed. + * Api/webkitgtkdefines.h: Removed. + * Api/webkitgtkframe.cpp: Removed. + * Api/webkitgtkframe.h: Removed. + * Api/webkitgtkglobal.cpp: Removed. + * Api/webkitgtkglobal.h: Removed. + * Api/webkitgtknetworkrequest.cpp: Removed. + * Api/webkitgtknetworkrequest.h: Removed. + * Api/webkitgtkpage.cpp: Removed. + * Api/webkitgtkpage.h: Removed. + * Api/webkitgtkprivate.cpp: Removed. + * Api/webkitgtkprivate.h: Removed. + * Api/webkitgtksettings.cpp: Removed. + * Api/webkitgtksettings.h: Removed. + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): + (WebKit::ChromeClient::createWindow): + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::webPage): + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::isEditable): + (WebKit::EditorClient::EditorClient): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::postProgressStartedNotification): + (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification): + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction): + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::windowObjectCleared): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + (WebKit::FrameLoaderClient::setTitle): + * WebCoreSupport/FrameLoaderClientGtk.h: + (WebKit::FrameLoaderClient::webFrame): + * WebView: Added. + * WebView/headers.pri: Added. + * WebView/webkit-marshal.list: Added. + * WebView/webkitdefines.h: Added. + * WebView/webkitglobal.cpp: Added. + * WebView/webkitglobal.h: Added. + * WebView/webkitnetworkrequest.cpp: Added. + * WebView/webkitnetworkrequest.h: Added. + * WebView/webkitprivate.cpp: Added. + (WebKit::apply): + (WebKit::create): + (WebKit::getFrameFromView): + (WebKit::getViewFromFrame): + (WebKit::core): + (WebKit::kit): + * WebView/webkitprivate.h: Added. + * WebView/webkitsettings.cpp: Added. + * WebView/webkitsettings.h: Added. + * WebView/webkitwebframe.cpp: Added. + * WebView/webkitwebframe.h: Added. + * WebView/webkitwebview.cpp: Added. + * WebView/webkitwebview.h: Added. + +2007-11-28 Alp Toker <alp@atoker.com> + + Reviewed by Timothy Hatcher. + + http://bugs.webkit.org/show_bug.cgi?id=16174 + [GTK] Use "URI" not "URL" in public API + + Replace use of the term "URL" with "URI" in public headers, + documentation and some internal code to match GLib/GTK+ convention. + + This is now mentioned in the API guidelines: + http://trac.webkit.org/projects/webkit/wiki/HackingGtk + + API/ABI-breaking change. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtknetworkrequest.cpp: + * Api/webkitgtknetworkrequest.h: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.h: + * Api/webkitgtksettings.h: + +2007-11-29 Brady Eidson <beidson@apple.com> + + Better build fix for Gtk + + * WebCoreSupport/ChromeClientGtk.h: + +2007-11-29 Brady Eidson <beidson@apple.com> + + Keep it building with new client method + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::requestQuotaIncreaseForNewDatabase): + (WebKit::ChromeClient::requestQuotaIncreaseForDatabaseOperation): + * WebCoreSupport/ChromeClientGtk.h: + +2007-11-26 Alp Toker <alp@atoker.com> + + Reviewed by Adam Roben. + + http://bugs.webkit.org/show_bug.cgi?id=16149 + Implement the window-object-cleared signal + + This implementation provides the JSGlobalContextRef and JSObjectRef + directly rather than using an intermediate JS wrapper object, similar + to the approach taken by the Win port. + + * Api/webkitgtk-marshal.list: + * Api/webkitgtkframe.h: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + +2007-11-24 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=15691 + [GTK] Public API does not follow GTK+ conventions + + Public API enhancements: + + Implement webkit_page_get_editable() and webkit_page_set_editable(). + + Implement webkit_frame_get_name(). + + Remove definitions for functions that are unusable or not implemented. + This has caused much confusion for application developers. + + Improve documentation. + + Correct/constify some return types. + + Add parameter checks. + + Make the default fixed font "Courier New" to match the other Web + font names. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframe.h: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.h: + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::isEditable): + +2007-11-24 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=16125 + [GTK] Up key doesn't work properly when content is editable + + Add a missing 'break' to avoid falling through to the next case when + handling VK_UP keystrokes. This was noticed when working on editing + support in the GTK+ port. + + I've checked the other cases for similar typos and they seem fine. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeypress): + +2007-11-24 Xan Lopez <xan@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15745 + [GTK] Arrow keys do not Scroll + + * Api/webkitgtkpage.cpp: + + Support Up/Down/Right/Left keys to scroll. Slight hack, see FIXME for + details. + +2007-11-24 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15891 + [GTK] Javascript console and dialogs are not implemented + + Fix call to gtk_message_dialog_new() which expects a format string. + + * Api/webkitgtkpage.cpp: + +2007-11-24 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15793 + [GTK] Webkit doesn't show title attribute tooltip when hovering over an image + + Implement tooltip support using the new Tooltip API. + + Support for older versions of GTK+ is still lacking. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::setToolTip): + +2007-11-22 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Implement and document several WebKitFrame functions, some of which + are necessary to support DRT. + + Correct NULL handling and improve run-time checks. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframe.h: + * Api/webkitgtkprivate.cpp: + +2007-11-22 Alp Toker <alp@atoker.com> + + Whitespace fixes only. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.h: + * WebCoreSupport/ChromeClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.cpp: + * WebCoreSupport/ContextMenuClientGtk.h: + * WebCoreSupport/DragClientGtk.h: + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest): + (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification): + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::createJavaAppletWidget): + (WebKit::FrameLoaderClient::registerForIconNotification): + (WebKit::FrameLoaderClient::setMainFrameDocumentReady): + (WebKit::FrameLoaderClient::dispatchDidFinishLoad): + (WebKit::FrameLoaderClient::frameLoadCompleted): + (WebKit::FrameLoaderClient::saveViewStateToItem): + (WebKit::FrameLoaderClient::restoreViewState): + (WebKit::FrameLoaderClient::shouldGoToHistoryItem): + (WebKit::FrameLoaderClient::setTitle): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-11-22 Michael Natterer <mitch@imendio.com> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=15984 + Implement "navigation-requested" signal for WebKit Gtk + + * Api/webkitgtknetworkrequest.h: fix parent class member. + + * Api/webkitgtknetworkrequest.cpp + * Api/webkitgtkprivate.h: basic implementation featuring an + "url" member and API. + + * Api/webkitgtkdefines.h: added network request typedefs. + + * Api/webkitgtkpage.h: fix enum name: + s/WEBKIT_NAVIGATION_REQUEST_RESPONSE/WebKitNavigationRequestResponse/ + and sanitized enum values. + + * Api/webkitgtkpage.cpp: made "navigation-requested" a signal. + + * Api/webkitgtk-marshal.list: added INT:OBJECT,OBJECT + + * WebCoreSupport/FrameLoaderClientGtk.cpp: emit the new signal in + dispatchDecidePolicyForNavigationAction(). + +2007-11-18 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp. + + http://bugs.webkit.org/show_bug.cgi?id=15891 + [GTK] Javascript console and dialogs are not implemented + + Correct script-prompt to return NULL when cancelled. + + Small changes to avoid compiler warnings. + + * Api/webkitgtkpage.cpp: + +2007-11-17 Timothy Hatcher <timothy@apple.com> + + Reviewed by Mark Rowe. + + Bug 13470: i18n: The Web Inspector is not localizable + http://bugs.webkit.org/show_bug.cgi?id=13470 + + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::localizedStringsURL): Empty stub. + * WebCoreSupport/InspectorClientGtk.h: Add localizedStringsURL. + +2007-11-13 Mark Rowe <mrowe@apple.com> + + Gtk build fix. Replace incorrect use of the LOG macro with g_print. + + * Api/webkitgtkpage.cpp: + +2007-11-13 Christian Dywan <christian@twotoasts.de> + + Reviewed by Alp. + + http://bugs.webkit.org/show_bug.cgi?id=15891 + [GTK] Javascript console and dialogs are not implemented + + Implement signals for script dialogs and console messages. + + * Api/webkitgtk-marshal.list: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::addMessageToConsole): + (WebKit::ChromeClient::runJavaScriptAlert): + (WebKit::ChromeClient::runJavaScriptConfirm): + (WebKit::ChromeClient::runJavaScriptPrompt): + +2007-11-11 Alp Toker <alp@atoker.com> + + Reviewed by Anders. + + Initialize m_userAgent. + + Fix typos in GDK_WINDOWING conditionals. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::agentPlatform): + +2007-11-11 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Mention Safari in the UserAgent string to improve site compatibility. + + Also bump the hard-coded AppleWebKit version number. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::composeUserAgent): + +2007-11-09 Xan Lopez <xan@gnome.org> + + Reviewed by Alp. + + Fix http://bugs.webkit.org/show_bug.cgi?id=15926 + [GTK] WebKitPage map handler is redundant. + + * Api/webkitgtkpage.cpp: + The map handler for WebKitPage is redundant, GtkContainer does + the same (and more correctly). + +2007-11-08 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=15653 + [GTK] Text editor does not handle common keystrokes + + Handle more keystrokes in EditorClientGtk. Note that this is a + temporary measure pending a proper solution using GtkBindingSet (see + http://bugs.webkit.org/show_bug.cgi?id=15911). + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeypress): + +2007-11-08 Kevin McCullough <kmccullough@apple.com> + + Reviewed by Sam. + + - windowObjectCleared() is no longer const. It needs to setup the + script debugger and cannot be const to do so. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::windowObjectCleared): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-11-06 Rodney Dawes <dobey@wayofthemonkey.com> + + Fix http://bugs.webkit.org/attachment.cgi?id=17043&action=view + Bug 15766: [GTK] WebKit sometimes spews binary data as text/plain into iframes + + FrameLoaderClient::objectContentType needs to check with the MIMETypeRegistry + to determine whether the given MIME type is displayable as an image or non-image. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (FrameLoaderClient::objectContentType): Change logic to match that in + the Windows and Mac ports. + +2007-11-05 Christian Dywan <christian@twotoasts.de> + + Reviewed by Maciej. + + http://bugs.webkit.org/show_bug.cgi?id=15409 + FrameLoaderClientGtk hardcodes data, including platform to Linux i686 + + Compute a proper user agent string. + + Patch includes fixes by Alp. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::agentPlatform): + (WebKit::agentOS): + (WebKit::composeUserAgent): + (WebKit::FrameLoaderClient::userAgent): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-11-05 Mark Rowe <mrowe@apple.com> + + Rubber-stamped by Alp Toker. + + Remove unused m_firstData member from FrameLoaderClientGtk. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-11-05 Mark Rowe <mrowe@apple.com> + + Reviewed by Alp Toker. + + Fix http://bugs.webkit.org/show_bug.cgi?id=15842 + Bug 15842: [Gtk] about:blank doesn't work + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::finishedLoading): Set the encoding on the frame loader to + get work done that is normally done when the first bit of data is received, even in the + case of a document with no data (like about:blank). + +2007-11-03 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Restore correct double and triple click behaviour + + We ended up ignoring GDK_2BUTTON_PRESS and GDK_3BUTTON_PRESS after + recent refactoring. + + * Api/webkitgtkpage.cpp: + +2007-11-03 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + Frame scrolling and invalidation fixes + + Make upward scroll events have a positive delta to match other ports. + + Fix the invalidation rect offset for frames so that scrolling works properly. + + Avoid allocating negative sizes to widgets to avoid GTK+ warnings. + + Allow tabbing to all widgets and links. + + Fix event returns, improving the focus situation and correcting scroll wheel + behavior. + + * Api/webkitgtkpage.cpp: + * WebCoreSupport/ChromeClientGtk.cpp: + +2007-10-29 Alp Toker <alp@atoker.com> + + Reviewed by Maciej. + + Do not allow control to reach end of non-void functions + + * Api/webkitgtksettings.cpp: + +2007-10-28 Lars Lindner <lars.lindner@gmail.com> + + Reviewed by Alp. + + http://bugs.webkit.org/show_bug.cgi?id=15466 + [gtk] widget does not take focus on mouse click + + Grab widget focus in mouse press callback. + + * Api/webkitgtkpage.cpp: + +2007-10-25 Alp Toker <alp@atoker.com> + + Reviewed by Brady. + + http://bugs.webkit.org/show_bug.cgi?id=15686 + GtkLauncher aborts on launch due to uninitialized threading subsystem + + Re-enable database support in the GTK+ port, with a fix. + + Initialize GLib threading as early as possible. + + * Api/webkitgtkglobal.cpp: + +2007-10-25 Alp Toker <alp@atoker.com> + + Unreviewed fix to make the GTK+ port run. + + http://bugs.webkit.org/show_bug.cgi?id=15686 + GtkLauncher aborts on launch due to uninitialized threading subsystem + + http://bugs.webkit.org/show_bug.cgi?id=15688 + [GTK] Make it possible to disable database support + + Make database path initialization conditional on database support + being enabled. + + * Api/webkitgtkglobal.cpp: + +2007-10-24 Mark Rowe <mrowe@apple.com> + + Gtk build fix. Track WebCore changes in r27004. + + * Api/webkitgtkglobal.cpp: + +2007-10-22 Alp Toker <alp@atoker.com> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=15611 + [GTK] Text selection behaviour different in Debug and Release builds + + http://bugs.webkit.org/show_bug.cgi?id=15578 + [GTK] Text editor caret does not blink + + Never allow control to reach the end of non-void functions. + + Return more sensible values, or in some cases, nulls. + + * Api/webkitgtksettings.cpp: + * Api/webkitgtksettings.h: + * WebCoreSupport/DragClientGtk.cpp: + (WebKit::DragClient::actionMaskForDrag): + (WebKit::DragClient::dragSourceActionMaskForPoint): + (WebKit::DragClient::createDragImageForLink): + +2007-10-20 Mark Rowe <mrowe@apple.com> + + Reviewed by Alp. + + Gtk changes needed to enable HTML 5 client-side database storage. + + * Api/webkitgtkglobal.cpp: Set a default database path based on the user data directory. + This should become configurable by client applications in the future. + +2007-10-20 Mark Rowe <mrowe@apple.com> + + Reviewed by Eric. + + Don't allow control characters to be inserted into editable regions. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::handleKeypress): + +2007-10-19 Alp Toker <alp@atoker.com> + + Reviewed by Oliver. + + GTK+ build fix enabling the new local database storage feature. + There is also a prospective Qt build fix. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::runDatabaseSizeLimitPrompt): + * WebCoreSupport/ChromeClientGtk.h: + +2007-10-14 Jan Michael Alonzo <jmalonzo@unpluggable.com> + + Reviewed by Adam. + + http://bugs.webkit.org/show_bug.cgi?id=15299 + Fix "hovering_over_link" signal not emitted when consecutive links + are hovered. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + * WebCoreSupport/ChromeClientGtk.h: + - Remove m_didSendLinkSignal as it is superseded by m_hoveredLinkURL + +2007-10-10 Alice Liu <alice.liu@apple.com> + + Reviewed by Geoff Garen. + + changes to keep the build from breaking + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createFrame): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-10-03 Alp Toker <alp@atoker.com> + + Reviewed by Adam. + + http://bugs.webkit.org/show_bug.cgi?id=14726 + [gtk] API design. Mapping the WebView delegates to signals. + + Change the API namespace of the Gtk+ port from 'WebKitGtk' to 'WebKit'. + + * Api/webkitgtkdefines.h: + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframe.h: + * Api/webkitgtkglobal.cpp: + * Api/webkitgtkglobal.h: + * Api/webkitgtknetworkrequest.h: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.cpp: + (WebKit::apply): + (WebKit::create): + (WebKit::getFrameFromPage): + (WebKit::getPageFromFrame): + (WebKit::core): + (WebKit::kit): + * Api/webkitgtkprivate.h: + * Api/webkitgtksettings.cpp: + * Api/webkitgtksettings.h: + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): + (WebKit::ChromeClient::createWindow): + (WebKit::ChromeClient::addMessageToConsole): + (WebKit::ChromeClient::runJavaScriptAlert): + (WebKit::ChromeClient::runJavaScriptConfirm): + (WebKit::ChromeClient::runJavaScriptPrompt): + * WebCoreSupport/ChromeClientGtk.h: + (WebKit::ChromeClient::webPage): + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::EditorClient): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::postProgressStartedNotification): + (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification): + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::createFrame): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + (WebKit::FrameLoaderClient::setTitle): + * WebCoreSupport/FrameLoaderClientGtk.h: + (WebKit::FrameLoaderClient::webFrame): + +2007-10-02 Cosimo Cecchi <cosimoc@svn.gnome.org> + + Reviewed by Mark. + + http://bugs.webkit.org/show_bug.cgi?id=15299 + Fix "hovering_over_link" signal being fired every time mouse moves. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): + (WebKit::ChromeClient::mouseDidMoveOverElement): + * WebCoreSupport/ChromeClientGtk.h: + +2007-09-21 Sean Egan <seanegan@gmail.com> + + Reviewed by Alp. + + Add an "execute_script" method to programmatically call Javascript + http://bugs.webkit.org/show_bug.cgi?id=15255 + + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + +2007-09-29 Lars Lindner <lars.lindner@gmail.com> + + Reviewed by Adam. + + ChromeClientGtk.cpp does not implement mouseDidMoveOverElement() + http://bugs.webkit.org/show_bug.cgi?id=15299 + + Implementing "hovering_over_link" signal. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::mouseDidMoveOverElement): + +2007-09-26 Mark Rowe <mrowe@apple.com> + + Gtk build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: Check for empty URL instead of invalid URL. + +2007-09-17 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + WebKitGtkPage and WebKitGtkFrame have a dependency on each other. To + allow client code to include both headers the typedef's for + WebKitGtkFrame, WebKitGtkPage, WebKitGtkFrameData and WebKitGtkNetworkRequest + are moved into webkitgtkdefines.h and included by both webkitgtkpage.h and + webkitgtkframe.h + + * Api/webkitgtkdefines.h: + * Api/webkitgtkframe.h: + * Api/webkitgtkpage.h: + +2007-09-17 Cyril Brulebois <cyril.brulebois@enst-bretagne.fr> + + Reviewed by Mark, some Coding Style changes by Holger. + + This is from http://bugs.webkit.org/show_bug.cgi?id=14812. + + Add title and location to WebKitGtkFramePrivate, add + webkit_gtk_frame_get_location to the WebKitGtkFrame API as well + as a title_changed callback, implement + webkit_gtk_frame_get_title and webkit_gtk_frame_get_location. + + Initial patch by Diego Escalante Urrelo. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframe.h: + * Api/webkitgtkprivate.h: + +2007-09-15 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Mark. + + Use the new WebCore::String::fromUTF8 function to convert + from the Gtk+ representation of a string to WebCore::String. + + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::runJavaScriptPrompt): + +2007-09-10 Nigel Tao <nigeltao@gnome.org> + + Reviewed by Mark Rowe. + + Fix a typo where webkit_gtk_page_can_copy was declared twice, + rather than webkit_gtk_page_can_paste. + + * Api/webkitgtkpage.h: + +2007-09-08 Brady Eidson <beidson@apple.com> + + Better build fix + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::registerForIconNotification): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-09-08 Brady Eidson <beidson@apple.com> + + Build fix + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::registerForIconNotification): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-09-05 Geoffrey Garen <ggaren@apple.com> + + Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher. + + Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no + memory cache, or a very tiny one + + Keep the GTK build working with an empty stub. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::didPerformFirstNavigation): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-09-01 Oliver Hunt <oliver@apple.com> + + Reviewed by Sam. + + <rdar://problem/5344848> IME is incorrectly used for key events when on non-editable regions + + EditorClient::setInputMethodState stub + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::setInputMethodState): + * WebCoreSupport/EditorClientGtk.h: + +2007-08-18 Holger Hans Peter Freyther <zecke@selfish.org> + + Build fix. Add const to the first parameter of createPlugin + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + +2007-08-17 Anders Carlsson <andersca@apple.com> + + Build fix. + + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::createPlugin): + * WebCoreSupport/FrameLoaderClientGtk.h: + +2007-08-11 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + To not hit the needsLayout() assert of Frame::paint for subframes we need to + make sure they are layed out. Use the newly created FrameView::layoutIfNeededRecursive + method to do this. + + * Api/webkitgtkpage.cpp: + +2007-08-11 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Fix text selection by setting a DragClient when creating the Page. Now + that we have a DragClient we can free the Page when WebKitGtkPage gets + destructed. + + * Api/webkitgtkpage.cpp: + * WebCoreSupport/DragClientGtk.cpp: Added. + (WebKit::DragClient::willPerformDragDestinationAction): + (WebKit::DragClient::willPerformDragSourceAction): + (WebKit::DragClient::actionMaskForDrag): + (WebKit::DragClient::dragSourceActionMaskForPoint): + (WebKit::DragClient::startDrag): + (WebKit::DragClient::createDragImageForLink): + * WebCoreSupport/DragClientGtk.h: Added. + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Anders. + + Make WebKitGtkPage a GtkContainer to avoid a size_allocate + race of GtkScrollBar and GtkLayout. + + * Api/webkitgtk-marshal.list: + * Api/webkitgtkframe.cpp: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.h: + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Niko. + + Minor changes to the WebKit::EditorClient to allow removing + of text from TextFields. Remove the selectWordBeforeMenuEvent method + which is not used and not within WebCore::EditorClient. + + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldDeleteRange): + (WebKit::EditorClient::shouldBeginEditing): + (WebKit::EditorClient::shouldEndEditing): + (WebKit::EditorClient::shouldApplyStyle): + (WebKit::EditorClient::shouldInsertNode): + * WebCoreSupport/EditorClientGtk.h: + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Mark. + + Rename the namespace from WebKitGtk to WebKit. Move the various *Client + classes into the WebKit namespace. Change the class names to not contain Gtk. + The file names have to contain the Gtk suffix to not clash with files in WebCore (e.g. + bridge/EditorClient.h). + + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkprivate.cpp: + * Api/webkitgtkprivate.h: + * ChangeLog: + * WebCoreSupport/ChromeClientGtk.cpp: + (WebKit::ChromeClient::ChromeClient): + (WebKit::ChromeClient::chromeDestroyed): + (WebKit::ChromeClient::windowRect): + (WebKit::ChromeClient::setWindowRect): + (WebKit::ChromeClient::pageRect): + (WebKit::ChromeClient::scaleFactor): + (WebKit::ChromeClient::focus): + (WebKit::ChromeClient::unfocus): + (WebKit::ChromeClient::createWindow): + (WebKit::ChromeClient::createModalDialog): + (WebKit::ChromeClient::show): + (WebKit::ChromeClient::canRunModal): + (WebKit::ChromeClient::runModal): + (WebKit::ChromeClient::setToolbarsVisible): + (WebKit::ChromeClient::toolbarsVisible): + (WebKit::ChromeClient::setStatusbarVisible): + (WebKit::ChromeClient::statusbarVisible): + (WebKit::ChromeClient::setScrollbarsVisible): + (WebKit::ChromeClient::scrollbarsVisible): + (WebKit::ChromeClient::setMenubarVisible): + (WebKit::ChromeClient::menubarVisible): + (WebKit::ChromeClient::setResizable): + (WebKit::ChromeClient::closeWindowSoon): + (WebKit::ChromeClient::canTakeFocus): + (WebKit::ChromeClient::takeFocus): + (WebKit::ChromeClient::canRunBeforeUnloadConfirmPanel): + (WebKit::ChromeClient::runBeforeUnloadConfirmPanel): + (WebKit::ChromeClient::runJavaScriptAlert): + (WebKit::ChromeClient::runJavaScriptConfirm): + (WebKit::ChromeClient::setStatusbarText): + (WebKit::ChromeClient::shouldInterruptJavaScript): + (WebKit::ChromeClient::tabsToLinks): + (WebKit::ChromeClient::windowResizerRect): + (WebKit::ChromeClient::addToDirtyRegion): + (WebKit::ChromeClient::scrollBackingStore): + (WebKit::ChromeClient::updateBackingStore): + (WebKit::ChromeClient::mouseDidMoveOverElement): + (WebKit::ChromeClient::setToolTip): + * WebCoreSupport/ChromeClientGtk.h: + * WebCoreSupport/ContextMenuClientGtk.cpp: + (WebKit::ContextMenuClient::contextMenuDestroyed): + (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems): + (WebKit::ContextMenuClient::contextMenuItemSelected): + (WebKit::ContextMenuClient::downloadURL): + (WebKit::ContextMenuClient::copyImageToClipboard): + (WebKit::ContextMenuClient::searchWithGoogle): + (WebKit::ContextMenuClient::lookUpInDictionary): + (WebKit::ContextMenuClient::speak): + * WebCoreSupport/ContextMenuClientGtk.h: + * WebCoreSupport/EditorClientGtk.cpp: + (WebKit::EditorClient::shouldDeleteRange): + (WebKit::EditorClient::shouldShowDeleteInterface): + (WebKit::EditorClient::isContinuousSpellCheckingEnabled): + (WebKit::EditorClient::isGrammarCheckingEnabled): + (WebKit::EditorClient::spellCheckerDocumentTag): + (WebKit::EditorClient::shouldBeginEditing): + (WebKit::EditorClient::shouldEndEditing): + (WebKit::EditorClient::shouldInsertText): + (WebKit::EditorClient::shouldChangeSelectedRange): + (WebKit::EditorClient::shouldApplyStyle): + (WebKit::EditorClient::shouldMoveRangeAfterDelete): + (WebKit::EditorClient::didBeginEditing): + (WebKit::EditorClient::respondToChangedContents): + (WebKit::EditorClient::respondToChangedSelection): + (WebKit::EditorClient::didEndEditing): + (WebKit::EditorClient::didWriteSelectionToPasteboard): + (WebKit::EditorClient::didSetSelectionTypesForPasteboard): + (WebKit::EditorClient::selectWordBeforeMenuEvent): + (WebKit::EditorClient::isEditable): + (WebKit::EditorClient::registerCommandForUndo): + (WebKit::EditorClient::registerCommandForRedo): + (WebKit::EditorClient::clearUndoRedoOperations): + (WebKit::EditorClient::canUndo): + (WebKit::EditorClient::canRedo): + (WebKit::EditorClient::undo): + (WebKit::EditorClient::redo): + (WebKit::EditorClient::shouldInsertNode): + (WebKit::EditorClient::pageDestroyed): + (WebKit::EditorClient::smartInsertDeleteEnabled): + (WebKit::EditorClient::toggleContinuousSpellChecking): + (WebKit::EditorClient::toggleGrammarChecking): + (WebKit::EditorClient::handleInputMethodKeypress): + (WebKit::EditorClient::EditorClient): + (WebKit::EditorClient::textFieldDidBeginEditing): + (WebKit::EditorClient::textFieldDidEndEditing): + (WebKit::EditorClient::textDidChangeInTextField): + (WebKit::EditorClient::doTextFieldCommandFromEvent): + (WebKit::EditorClient::textWillBeDeletedInTextField): + (WebKit::EditorClient::textDidChangeInTextArea): + (WebKit::EditorClient::ignoreWordInSpellDocument): + (WebKit::EditorClient::learnWord): + (WebKit::EditorClient::checkSpellingOfString): + (WebKit::EditorClient::checkGrammarOfString): + (WebKit::EditorClient::updateSpellingUIWithGrammarString): + (WebKit::EditorClient::updateSpellingUIWithMisspelledWord): + (WebKit::EditorClient::showSpellingUI): + (WebKit::EditorClient::spellingUIIsShowing): + * WebCoreSupport/EditorClientGtk.h: + * WebCoreSupport/FrameLoaderClientGtk.cpp: + (WebKit::FrameLoaderClient::FrameLoaderClient): + (WebKit::FrameLoaderClient::userAgent): + (WebKit::FrameLoaderClient::createDocumentLoader): + (WebKit::FrameLoaderClient::committedLoad): + (WebKit::FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge): + (WebKit::FrameLoaderClient::dispatchDidCancelAuthenticationChallenge): + (WebKit::FrameLoaderClient::dispatchWillSendRequest): + (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest): + (WebKit::FrameLoaderClient::postProgressStartedNotification): + (WebKit::FrameLoaderClient::postProgressFinishedNotification): + (WebKit::FrameLoaderClient::frameLoaderDestroyed): + (WebKit::FrameLoaderClient::dispatchDidReceiveResponse): + (WebKit::FrameLoaderClient::createPlugin): + (WebKit::FrameLoaderClient::redirectDataToPlugin): + (WebKit::FrameLoaderClient::createJavaAppletWidget): + (WebKit::FrameLoaderClient::overrideMediaType): + (WebKit::FrameLoaderClient::windowObjectCleared): + (WebKit::FrameLoaderClient::setMainFrameDocumentReady): + (WebKit::FrameLoaderClient::hasWebView): + (WebKit::FrameLoaderClient::hasFrameView): + (WebKit::FrameLoaderClient::dispatchDidFinishLoad): + (WebKit::FrameLoaderClient::frameLoadCompleted): + (WebKit::FrameLoaderClient::saveViewStateToItem): + (WebKit::FrameLoaderClient::restoreViewState): + (WebKit::FrameLoaderClient::privateBrowsingEnabled): + (WebKit::FrameLoaderClient::makeDocumentView): + (WebKit::FrameLoaderClient::makeRepresentation): + (WebKit::FrameLoaderClient::forceLayout): + (WebKit::FrameLoaderClient::forceLayoutForNonHTML): + (WebKit::FrameLoaderClient::setCopiesOnScroll): + (WebKit::FrameLoaderClient::detachedFromParent1): + (WebKit::FrameLoaderClient::detachedFromParent2): + (WebKit::FrameLoaderClient::detachedFromParent3): + (WebKit::FrameLoaderClient::detachedFromParent4): + (WebKit::FrameLoaderClient::loadedFromCachedPage): + (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents): + (WebKit::FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidCancelClientRedirect): + (WebKit::FrameLoaderClient::dispatchWillPerformClientRedirect): + (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage): + (WebKit::FrameLoaderClient::dispatchWillClose): + (WebKit::FrameLoaderClient::dispatchDidReceiveIcon): + (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): + (WebKit::FrameLoaderClient::dispatchDidCommitLoad): + (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad): + (WebKit::FrameLoaderClient::dispatchDidFirstLayout): + (WebKit::FrameLoaderClient::dispatchShow): + (WebKit::FrameLoaderClient::cancelPolicyCheck): + (WebKit::FrameLoaderClient::dispatchDidLoadMainResource): + (WebKit::FrameLoaderClient::revertToProvisionalState): + (WebKit::FrameLoaderClient::clearUnarchivingState): + (WebKit::FrameLoaderClient::willChangeTitle): + (WebKit::FrameLoaderClient::didChangeTitle): + (WebKit::FrameLoaderClient::finishedLoading): + (WebKit::FrameLoaderClient::finalSetupForReplace): + (WebKit::FrameLoaderClient::setDefersLoading): + (WebKit::FrameLoaderClient::isArchiveLoadPending): + (WebKit::FrameLoaderClient::cancelPendingArchiveLoad): + (WebKit::FrameLoaderClient::clearArchivedResources): + (WebKit::FrameLoaderClient::canHandleRequest): + (WebKit::FrameLoaderClient::canShowMIMEType): + (WebKit::FrameLoaderClient::representationExistsForURLScheme): + (WebKit::FrameLoaderClient::generatedMIMETypeForURLScheme): + (WebKit::FrameLoaderClient::provisionalLoadStarted): + (WebKit::FrameLoaderClient::didFinishLoad): + (WebKit::FrameLoaderClient::setDocumentViewFromCachedPage): + (WebKit::FrameLoaderClient::dispatchDidReceiveContentLength): + (WebKit::FrameLoaderClient::dispatchDidFinishLoading): + (WebKit::FrameLoaderClient::dispatchDidFailLoading): + (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): + (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad): + (WebKit::FrameLoaderClient::dispatchDidFailLoad): + (WebKit::FrameLoaderClient::download): + (WebKit::FrameLoaderClient::cancelledError): + (WebKit::FrameLoaderClient::blockedError): + (WebKit::FrameLoaderClient::cannotShowURLError): + (WebKit::FrameLoaderClient::interruptForPolicyChangeError): + (WebKit::FrameLoaderClient::cannotShowMIMETypeError): + (WebKit::FrameLoaderClient::fileDoesNotExistError): + (WebKit::FrameLoaderClient::shouldFallBack): + (WebKit::FrameLoaderClient::willUseArchive): + (WebKit::FrameLoaderClient::saveDocumentViewToCachedPage): + (WebKit::FrameLoaderClient::canCachePage): + (WebKit::FrameLoaderClient::dispatchCreatePage): + (WebKit::FrameLoaderClient::dispatchUnableToImplementPolicy): + * WebCoreSupport/FrameLoaderClientGtk.h: + * WebCoreSupport/InspectorClientGtk.cpp: + (WebKit::InspectorClient::inspectorDestroyed): + (WebKit::InspectorClient::createPage): + (WebKit::InspectorClient::showWindow): + (WebKit::InspectorClient::closeWindow): + (WebKit::InspectorClient::attachWindow): + (WebKit::InspectorClient::detachWindow): + (WebKit::InspectorClient::highlight): + (WebKit::InspectorClient::hideHighlight): + * WebCoreSupport/InspectorClientGtk.h: + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + As of http://bugs.webkit.org/show_bug.cgi?id=14727 move the + various *ClientGdk.{cpp,h} files from WebCore to WebKit/gtk/WebCoreSupport and + rename it from Gdk to Gtk. + + * Api/webkitgtkdefines.h: + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframe.h: + * Api/webkitgtkglobal.cpp: + * Api/webkitgtkglobal.h: + * Api/webkitgtknetworkrequest.cpp: + * Api/webkitgtknetworkrequest.h: + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.cpp: + * Api/webkitgtkprivate.h: + * Api/webkitgtksettings.cpp: + * Api/webkitgtksettings.h: + * WebCoreSupport/ChromeClientGtk.cpp: Renamed from WebKit/gtk/WebCoreSupport/ChromeClientGdk.cpp. + (WebKitGtk::ChromeClientGtk::ChromeClientGtk): + (WebKitGtk::ChromeClientGtk::chromeDestroyed): + (WebKitGtk::ChromeClientGtk::windowRect): + (WebKitGtk::ChromeClientGtk::setWindowRect): + (WebKitGtk::ChromeClientGtk::pageRect): + (WebKitGtk::ChromeClientGtk::scaleFactor): + (WebKitGtk::ChromeClientGtk::focus): + (WebKitGtk::ChromeClientGtk::unfocus): + (WebKitGtk::ChromeClientGtk::createWindow): + (WebKitGtk::ChromeClientGtk::createModalDialog): + (WebKitGtk::ChromeClientGtk::show): + (WebKitGtk::ChromeClientGtk::canRunModal): + (WebKitGtk::ChromeClientGtk::runModal): + (WebKitGtk::ChromeClientGtk::setToolbarsVisible): + (WebKitGtk::ChromeClientGtk::toolbarsVisible): + (WebKitGtk::ChromeClientGtk::setStatusbarVisible): + (WebKitGtk::ChromeClientGtk::statusbarVisible): + (WebKitGtk::ChromeClientGtk::setScrollbarsVisible): + (WebKitGtk::ChromeClientGtk::scrollbarsVisible): + (WebKitGtk::ChromeClientGtk::setMenubarVisible): + (WebKitGtk::ChromeClientGtk::menubarVisible): + (WebKitGtk::ChromeClientGtk::setResizable): + (WebKitGtk::ChromeClientGtk::closeWindowSoon): + (WebKitGtk::ChromeClientGtk::canTakeFocus): + (WebKitGtk::ChromeClientGtk::takeFocus): + (WebKitGtk::ChromeClientGtk::canRunBeforeUnloadConfirmPanel): + (WebKitGtk::ChromeClientGtk::runBeforeUnloadConfirmPanel): + (WebKitGtk::ChromeClientGtk::addMessageToConsole): + (WebKitGtk::ChromeClientGtk::runJavaScriptAlert): + (WebKitGtk::ChromeClientGtk::runJavaScriptConfirm): + (WebKitGtk::ChromeClientGtk::runJavaScriptPrompt): + (WebKitGtk::ChromeClientGtk::setStatusbarText): + (WebKitGtk::ChromeClientGtk::shouldInterruptJavaScript): + (WebKitGtk::ChromeClientGtk::tabsToLinks): + (WebKitGtk::ChromeClientGtk::windowResizerRect): + (WebKitGtk::ChromeClientGtk::addToDirtyRegion): + (WebKitGtk::ChromeClientGtk::scrollBackingStore): + (WebKitGtk::ChromeClientGtk::updateBackingStore): + (WebKitGtk::ChromeClientGtk::mouseDidMoveOverElement): + (WebKitGtk::ChromeClientGtk::setToolTip): + * WebCoreSupport/ChromeClientGtk.h: Renamed from WebKit/gtk/WebCoreSupport/ChromeClientGdk.h. + (WebKitGtk::ChromeClientGtk::webPage): + * WebCoreSupport/ContextMenuClientGtk.cpp: Renamed from WebCore/page/gdk/ContextMenuClientGdk.cpp. + (WebCore::ContextMenuClientGtk::contextMenuDestroyed): + (WebCore::ContextMenuClientGtk::getCustomMenuFromDefaultItems): + (WebCore::ContextMenuClientGtk::contextMenuItemSelected): + (WebCore::ContextMenuClientGtk::downloadURL): + (WebCore::ContextMenuClientGtk::copyImageToClipboard): + (WebCore::ContextMenuClientGtk::searchWithGoogle): + (WebCore::ContextMenuClientGtk::lookUpInDictionary): + (WebCore::ContextMenuClientGtk::speak): + (WebCore::ContextMenuClientGtk::stopSpeaking): + * WebCoreSupport/ContextMenuClientGtk.h: Renamed from WebCore/page/gdk/ContextMenuClientGdk.h. + * WebCoreSupport/EditorClientGtk.cpp: Renamed from WebCore/platform/gdk/EditorClientGdk.cpp. + (WebCore::EditorClientGtk::shouldDeleteRange): + (WebCore::EditorClientGtk::shouldShowDeleteInterface): + (WebCore::EditorClientGtk::isContinuousSpellCheckingEnabled): + (WebCore::EditorClientGtk::isGrammarCheckingEnabled): + (WebCore::EditorClientGtk::spellCheckerDocumentTag): + (WebCore::EditorClientGtk::shouldBeginEditing): + (WebCore::EditorClientGtk::shouldEndEditing): + (WebCore::EditorClientGtk::shouldInsertText): + (WebCore::EditorClientGtk::shouldChangeSelectedRange): + (WebCore::EditorClientGtk::shouldApplyStyle): + (WebCore::EditorClientGtk::shouldMoveRangeAfterDelete): + (WebCore::EditorClientGtk::didBeginEditing): + (WebCore::EditorClientGtk::respondToChangedContents): + (WebCore::EditorClientGtk::respondToChangedSelection): + (WebCore::EditorClientGtk::didEndEditing): + (WebCore::EditorClientGtk::didWriteSelectionToPasteboard): + (WebCore::EditorClientGtk::didSetSelectionTypesForPasteboard): + (WebCore::EditorClientGtk::selectWordBeforeMenuEvent): + (WebCore::EditorClientGtk::isEditable): + (WebCore::EditorClientGtk::registerCommandForUndo): + (WebCore::EditorClientGtk::registerCommandForRedo): + (WebCore::EditorClientGtk::clearUndoRedoOperations): + (WebCore::EditorClientGtk::canUndo): + (WebCore::EditorClientGtk::canRedo): + (WebCore::EditorClientGtk::undo): + (WebCore::EditorClientGtk::redo): + (WebCore::EditorClientGtk::shouldInsertNode): + (WebCore::EditorClientGtk::pageDestroyed): + (WebCore::EditorClientGtk::smartInsertDeleteEnabled): + (WebCore::EditorClientGtk::toggleContinuousSpellChecking): + (WebCore::EditorClientGtk::toggleGrammarChecking): + (WebCore::EditorClientGtk::handleKeypress): + (WebCore::EditorClientGtk::handleInputMethodKeypress): + (WebCore::EditorClientGtk::EditorClientGtk): + (WebCore::EditorClientGtk::textFieldDidBeginEditing): + (WebCore::EditorClientGtk::textFieldDidEndEditing): + (WebCore::EditorClientGtk::textDidChangeInTextField): + (WebCore::EditorClientGtk::doTextFieldCommandFromEvent): + (WebCore::EditorClientGtk::textWillBeDeletedInTextField): + (WebCore::EditorClientGtk::textDidChangeInTextArea): + (WebCore::EditorClientGtk::ignoreWordInSpellDocument): + (WebCore::EditorClientGtk::learnWord): + (WebCore::EditorClientGtk::checkSpellingOfString): + (WebCore::EditorClientGtk::checkGrammarOfString): + (WebCore::EditorClientGtk::updateSpellingUIWithGrammarString): + (WebCore::EditorClientGtk::updateSpellingUIWithMisspelledWord): + (WebCore::EditorClientGtk::showSpellingUI): + (WebCore::EditorClientGtk::spellingUIIsShowing): + (WebCore::EditorClientGtk::getGuessesForWord): + * WebCoreSupport/EditorClientGtk.h: Renamed from WebCore/platform/gdk/EditorClientGdk.h. + * WebCoreSupport/FrameLoaderClientGtk.cpp: Renamed from WebCore/loader/gdk/FrameLoaderClientGdk.cpp. + (WebCore::FrameLoaderClientGtk::FrameLoaderClientGtk): + (WebCore::FrameLoaderClientGtk::userAgent): + (WebCore::FrameLoaderClientGtk::createDocumentLoader): + (WebCore::FrameLoaderClientGtk::dispatchWillSubmitForm): + (WebCore::FrameLoaderClientGtk::committedLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveAuthenticationChallenge): + (WebCore::FrameLoaderClientGtk::dispatchDidCancelAuthenticationChallenge): + (WebCore::FrameLoaderClientGtk::dispatchWillSendRequest): + (WebCore::FrameLoaderClientGtk::assignIdentifierToInitialRequest): + (WebCore::FrameLoaderClientGtk::postProgressStartedNotification): + (WebCore::FrameLoaderClientGtk::postProgressEstimateChangedNotification): + (WebCore::FrameLoaderClientGtk::postProgressFinishedNotification): + (WebCore::FrameLoaderClientGtk::frameLoaderDestroyed): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveResponse): + (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForMIMEType): + (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForNewWindowAction): + (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForNavigationAction): + (WebCore::FrameLoaderClientGtk::createPlugin): + (WebCore::FrameLoaderClientGtk::createFrame): + (WebCore::FrameLoaderClientGtk::redirectDataToPlugin): + (WebCore::FrameLoaderClientGtk::createJavaAppletWidget): + (WebCore::FrameLoaderClientGtk::objectContentType): + (WebCore::FrameLoaderClientGtk::overrideMediaType): + (WebCore::FrameLoaderClientGtk::windowObjectCleared): + (WebCore::FrameLoaderClientGtk::setMainFrameDocumentReady): + (WebCore::FrameLoaderClientGtk::hasWebView): + (WebCore::FrameLoaderClientGtk::hasFrameView): + (WebCore::FrameLoaderClientGtk::dispatchDidFinishLoad): + (WebCore::FrameLoaderClientGtk::frameLoadCompleted): + (WebCore::FrameLoaderClientGtk::saveViewStateToItem): + (WebCore::FrameLoaderClientGtk::restoreViewState): + (WebCore::FrameLoaderClientGtk::shouldGoToHistoryItem): + (WebCore::FrameLoaderClientGtk::privateBrowsingEnabled): + (WebCore::FrameLoaderClientGtk::makeDocumentView): + (WebCore::FrameLoaderClientGtk::makeRepresentation): + (WebCore::FrameLoaderClientGtk::forceLayout): + (WebCore::FrameLoaderClientGtk::forceLayoutForNonHTML): + (WebCore::FrameLoaderClientGtk::setCopiesOnScroll): + (WebCore::FrameLoaderClientGtk::detachedFromParent1): + (WebCore::FrameLoaderClientGtk::detachedFromParent2): + (WebCore::FrameLoaderClientGtk::detachedFromParent3): + (WebCore::FrameLoaderClientGtk::detachedFromParent4): + (WebCore::FrameLoaderClientGtk::loadedFromCachedPage): + (WebCore::FrameLoaderClientGtk::dispatchDidHandleOnloadEvents): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveServerRedirectForProvisionalLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidCancelClientRedirect): + (WebCore::FrameLoaderClientGtk::dispatchWillPerformClientRedirect): + (WebCore::FrameLoaderClientGtk::dispatchDidChangeLocationWithinPage): + (WebCore::FrameLoaderClientGtk::dispatchWillClose): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveIcon): + (WebCore::FrameLoaderClientGtk::dispatchDidStartProvisionalLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveTitle): + (WebCore::FrameLoaderClientGtk::dispatchDidCommitLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidFinishDocumentLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidFirstLayout): + (WebCore::FrameLoaderClientGtk::dispatchShow): + (WebCore::FrameLoaderClientGtk::cancelPolicyCheck): + (WebCore::FrameLoaderClientGtk::dispatchDidLoadMainResource): + (WebCore::FrameLoaderClientGtk::revertToProvisionalState): + (WebCore::FrameLoaderClientGtk::clearUnarchivingState): + (WebCore::FrameLoaderClientGtk::willChangeTitle): + (WebCore::FrameLoaderClientGtk::didChangeTitle): + (WebCore::FrameLoaderClientGtk::finishedLoading): + (WebCore::FrameLoaderClientGtk::finalSetupForReplace): + (WebCore::FrameLoaderClientGtk::setDefersLoading): + (WebCore::FrameLoaderClientGtk::isArchiveLoadPending): + (WebCore::FrameLoaderClientGtk::cancelPendingArchiveLoad): + (WebCore::FrameLoaderClientGtk::clearArchivedResources): + (WebCore::FrameLoaderClientGtk::canHandleRequest): + (WebCore::FrameLoaderClientGtk::canShowMIMEType): + (WebCore::FrameLoaderClientGtk::representationExistsForURLScheme): + (WebCore::FrameLoaderClientGtk::generatedMIMETypeForURLScheme): + (WebCore::FrameLoaderClientGtk::provisionalLoadStarted): + (WebCore::FrameLoaderClientGtk::didFinishLoad): + (WebCore::FrameLoaderClientGtk::prepareForDataSourceReplacement): + (WebCore::FrameLoaderClientGtk::setTitle): + (WebCore::FrameLoaderClientGtk::setDocumentViewFromCachedPage): + (WebCore::FrameLoaderClientGtk::dispatchDidReceiveContentLength): + (WebCore::FrameLoaderClientGtk::dispatchDidFinishLoading): + (WebCore::FrameLoaderClientGtk::dispatchDidFailLoading): + (WebCore::FrameLoaderClientGtk::dispatchDidLoadResourceFromMemoryCache): + (WebCore::FrameLoaderClientGtk::dispatchDidFailProvisionalLoad): + (WebCore::FrameLoaderClientGtk::dispatchDidFailLoad): + (WebCore::FrameLoaderClientGtk::download): + (WebCore::FrameLoaderClientGtk::cancelledError): + (WebCore::FrameLoaderClientGtk::blockedError): + (WebCore::FrameLoaderClientGtk::cannotShowURLError): + (WebCore::FrameLoaderClientGtk::interruptForPolicyChangeError): + (WebCore::FrameLoaderClientGtk::cannotShowMIMETypeError): + (WebCore::FrameLoaderClientGtk::fileDoesNotExistError): + (WebCore::FrameLoaderClientGtk::shouldFallBack): + (WebCore::FrameLoaderClientGtk::willUseArchive): + (WebCore::FrameLoaderClientGtk::saveDocumentViewToCachedPage): + (WebCore::FrameLoaderClientGtk::canCachePage): + (WebCore::FrameLoaderClientGtk::dispatchCreatePage): + (WebCore::FrameLoaderClientGtk::dispatchUnableToImplementPolicy): + * WebCoreSupport/FrameLoaderClientGtk.h: Renamed from WebCore/loader/gdk/FrameLoaderClientGdk.h. + (WebCore::FrameLoaderClientGtk::~FrameLoaderClientGtk): + (WebCore::FrameLoaderClientGtk::webFrame): + * WebCoreSupport/InspectorClientGtk.cpp: Renamed from WebCore/page/gdk/InspectorClientGdk.cpp. + (WebCore::InspectorClientGtk::inspectorDestroyed): + (WebCore::InspectorClientGtk::createPage): + (WebCore::InspectorClientGtk::showWindow): + (WebCore::InspectorClientGtk::closeWindow): + (WebCore::InspectorClientGtk::attachWindow): + (WebCore::InspectorClientGtk::detachWindow): + (WebCore::InspectorClientGtk::highlight): + (WebCore::InspectorClientGtk::hideHighlight): + (WebCore::InspectorClientGtk::inspectedURLChanged): + * WebCoreSupport/InspectorClientGtk.h: Renamed from WebCore/page/gdk/InspectorClientGdk.h. + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Build fix. + + * Api/webkitgtkframe.cpp: + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Remove the create_frame virtual method of WebKitGtkPage. This method was inspired + by the Qt port but to be useful for reimplementations WebKitGtkFrameData would need + to export/expose WebCore types. WebView doesn't offer such a method so I decided to + remove it. + Add a internal constructor to WebKitGtkFrame to be used for constructing Sub-Frames. This + is currently used by FrameLoaderClientGdk::createFrame. + + * Api/webkitgtkframe.cpp: + * Api/webkitgtkframedata.cpp: Removed. + * Api/webkitgtkframedata.h: Removed. + * Api/webkitgtkpage.cpp: + * Api/webkitgtkpage.h: + * Api/webkitgtkprivate.h: + +2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Follow the changes of ScrollView in WebCore and call setContainingWindow, set the + GtkAdjustment of the GtkLayout and reimplement the set_scroll_adjustments method and pass + the GtkAdjustments to ScrollView. + This makes having one GdkWindow for the complete FrameTree possible. + + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkpage.cpp: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Niko. + + We only need to set the Settings of the Page once so do it in + WebKitGtkPage instead of WebKitGtkFrame. + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkpage.cpp: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Niko. + + Instead of reimplementing the general event method, reimplement + the specific mouse, expose, keyboard event methods. + + Call the finalize implementation of the base class from WebKitGtkPage + and WebKitGtkFrame. + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkpage.cpp: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Niko. + + Remove the custom painting in favor of the Widget::paint + implementation. + + * gtk/Api/webkitgtkpage.cpp: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Moved code from class FrameGdk into WebKitGtkFrame. Update the + webkitgrkprivate.h header file to not include FrameGdk.h. + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkprivate.h: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Change variable names to follow the Coding-Style. Replace occurences + of a_b with aB and place the '*' correctly. + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkpage.cpp: + * gtk/Api/webkitgtkprivate.h: + +2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Reimplement GtkWidget::event and handle the keyboard and mouse + events inside WebKitGtkPage. + + * gtk/Api/webkitgtkpage.cpp: + (FrameGdkExposeData::frame_gdk_expose_child): + (FrameGdkExposeData::webkit_gtk_page_rendering_area_handle_gdk_event): + (FrameGdkExposeData::webkit_gtk_page_register_rendering_area_events): + (FrameGdkExposeData::webkit_gtk_page_class_init): + +2007-08-07 Xan Lopez <xan@gnome.org> + + Reviewed by Mark Rowe. + + http://bugs.webkit.org/show_bug.cgi?id=14815 + [gtk] API implementation: reload + + * gtk/Api/webkitgtkpage.cpp: Implement the webkit_gtk_page_reload() + function. + +2007-07-30 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Adam. + + http://bugs.webkit.org/show_bug.cgi?id=14806 + Implement can_go_backward and can_go_forward in webkitgtkpage.cpp + + * gtk/Api/webkitgtkpage.cpp: Implement webkit_gtk_page_can_go_backward() and + webkit_gtk_page_can_go_forward() functions. + +2007-07-30 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=14810 + Bad n_params on load_finished's g_signal_new in webkitgtkpage.cpp + + This is the proper fix for #14810. + + * gtk/Api/webkitgtkframe.cpp: + * gtk/Api/webkitgtkpage.cpp: Fix the marshaller type of the "load_finished" signal and + correct the class_offset parameters. + +2007-07-29 Diego Escalante Urrelo <diegoe@gnome.org> + + Reviewed by Alp Toker. + + http://bugs.webkit.org/show_bug.cgi?id=14810 + Bad n_params on load_finished's g_signal_new in webkitgtkpage.cpp + + * gtk/Api/webkitgtkpage.cpp: Use a correct n_params value and the corresponding types for + them in the "load_finished" signal. + +2007-07-22 Holger Hans Peter Freyther <zecke@selfish.org> + + Reviewed by Adam. + + Add the first API and partial implementation of the WebKit/Gtk port as + of http://bugs.webkit.org/show_bug.cgi?id=14678. + + The delegates of WebView will be modeled as signals. Delegates like the + WebPolicyDelegate will be implemented as signals with default handlers. + + Start moving files to WebKit/gtk/WebCoreSupport. + + * gtk: Added. + * gtk/Api: Added. + * gtk/Api/headers.pri: Added. + * gtk/Api/webkitgtk-marshal.list: Added. + * gtk/Api/webkitgtkdefines.h: Added. + * gtk/Api/webkitgtkframe.cpp: Added. + * gtk/Api/webkitgtkframe.h: Added. + * gtk/Api/webkitgtkframedata.cpp: Added. + * gtk/Api/webkitgtkframedata.h: Added. + * gtk/Api/webkitgtkglobal.cpp: Added. + * gtk/Api/webkitgtkglobal.h: Added. + * gtk/Api/webkitgtknetworkrequest.cpp: Added. + * gtk/Api/webkitgtknetworkrequest.h: Added. + * gtk/Api/webkitgtkpage.cpp: Added. + * gtk/Api/webkitgtkpage.h: Added. + * gtk/Api/webkitgtkprivate.cpp: Added. + * gtk/Api/webkitgtkprivate.h: Added. + * gtk/Api/webkitgtksettings.cpp: Added. + * gtk/Api/webkitgtksettings.h: Added. + * gtk/WebCoreSupport: Added. + * gtk/WebCoreSupport/ChromeClientGdk.cpp: Added. + (WebCore::ChromeClientGdk::ChromeClientGdk): + (WebCore::ChromeClientGdk::chromeDestroyed): + (WebCore::ChromeClientGdk::windowRect): + (WebCore::ChromeClientGdk::setWindowRect): + (WebCore::ChromeClientGdk::pageRect): + (WebCore::ChromeClientGdk::scaleFactor): + (WebCore::ChromeClientGdk::focus): + (WebCore::ChromeClientGdk::unfocus): + (WebCore::ChromeClientGdk::createWindow): + (WebCore::ChromeClientGdk::createModalDialog): + (WebCore::ChromeClientGdk::show): + (WebCore::ChromeClientGdk::canRunModal): + (WebCore::ChromeClientGdk::runModal): + (WebCore::ChromeClientGdk::setToolbarsVisible): + (WebCore::ChromeClientGdk::toolbarsVisible): + (WebCore::ChromeClientGdk::setStatusbarVisible): + (WebCore::ChromeClientGdk::statusbarVisible): + (WebCore::ChromeClientGdk::setScrollbarsVisible): + (WebCore::ChromeClientGdk::scrollbarsVisible): + (WebCore::ChromeClientGdk::setMenubarVisible): + (WebCore::ChromeClientGdk::menubarVisible): + (WebCore::ChromeClientGdk::setResizable): + (WebCore::ChromeClientGdk::closeWindowSoon): + (WebCore::ChromeClientGdk::canTakeFocus): + (WebCore::ChromeClientGdk::takeFocus): + (WebCore::ChromeClientGdk::canRunBeforeUnloadConfirmPanel): + (WebCore::ChromeClientGdk::runBeforeUnloadConfirmPanel): + (WebCore::ChromeClientGdk::addMessageToConsole): + (WebCore::ChromeClientGdk::runJavaScriptAlert): + (WebCore::ChromeClientGdk::runJavaScriptConfirm): + (WebCore::ChromeClientGdk::runJavaScriptPrompt): + (WebCore::ChromeClientGdk::setStatusbarText): + (WebCore::ChromeClientGdk::shouldInterruptJavaScript): + (WebCore::ChromeClientGdk::tabsToLinks): + (WebCore::ChromeClientGdk::windowResizerRect): + (WebCore::ChromeClientGdk::addToDirtyRegion): + (WebCore::ChromeClientGdk::scrollBackingStore): + (WebCore::ChromeClientGdk::updateBackingStore): + (WebCore::ChromeClientGdk::mouseDidMoveOverElement): + (WebCore::ChromeClientGdk::setToolTip): + (WebCore::ChromeClientGdk::print): + * gtk/WebCoreSupport/ChromeClientGdk.h: Added. + diff --git a/Source/WebKit/gtk/GNUmakefile.am b/Source/WebKit/gtk/GNUmakefile.am new file mode 100644 index 0000000..c69d6ea --- /dev/null +++ b/Source/WebKit/gtk/GNUmakefile.am @@ -0,0 +1,593 @@ + +# Programs to run the WebKitGtk unit tests +GTESTER = gtester +GTESTER_REPORT = gtester-report + +lib_LTLIBRARIES += \ + libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la + +nodist_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \ + $(webkitgtk_built_sources) + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_ladir = $(prefix)/include/webkit-@WEBKITGTK_API_VERSION@/webkit +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_HEADERS = \ + $(webkitgtk_static_h_api) + +nodist_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_HEADERS = \ + $(webkitgtk_built_h_api) \ + $(GENSOURCES_WEBKIT)/webkitenumtypes.h + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \ + $(webcoregtk_sources) \ + $(webkitgtk_sources) + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CXXFLAGS = \ + $(SYMBOL_VISIBILITY_INLINES) \ + $(global_cxxflags) + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CFLAGS = \ + $(SYMBOL_VISIBILITY) \ + $(global_cflags) + +# When building WebCore/WebKit, we want WebCore/config.h and NOT JavaScriptCore/config.h, +# hence, it's important that WebCore/ should come first before JavaScriptCore in the +# include path. +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPPFLAGS = \ + -DBUILDING_WEBKIT \ + -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \ + -DDATA_DIR=\"${datadir}\" \ + -I$(WebCore)/bindings \ + -I$(WebCore)/bindings/gobject \ + -I$(WebKit) \ + -I$(WebKit)/WebCoreSupport \ + -I$(WebKit)/webkit \ + -I$(GENSOURCES_WEBKIT) \ + -ISource/WebKit/gtk/webkit \ + $(global_cppflags) \ + $(webcore_cppflags) \ + $(webcoregtk_cppflags) \ + $(javascriptcore_cppflags) \ + -fno-strict-aliasing \ + $(HILDON_CPPFLAGS) \ + $(COVERAGE_CFLAGS) \ + $(ENCHANT_CFLAGS) \ + $(GAIL_CFLAGS) \ + $(GEOCLUE_CFLAGS) \ + $(GLIB_CFLAGS) \ + $(GSTREAMER_CFLAGS) \ + $(GTK_CFLAGS) \ + $(HILDON_CFLAGS) \ + $(LIBSOUP_CFLAGS) \ + $(LIBXML_CFLAGS) \ + $(LIBXSLT_CFLAGS) \ + $(SQLITE3_CFLAGS) \ + $(UNICODE_CFLAGS) \ + $(XT_CFLAGS) + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LDFLAGS = \ + -version-info @LIBWEBKITGTK_VERSION@ \ + $(version_script) \ + $(no_undefined) + +libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD = \ + -lpthread \ + libWebCore.la \ + libJavaScriptCore.la \ + $(webcore_ldflags) \ + $(CAIRO_LIBS) \ + $(COVERAGE_LDFLAGS) \ + $(ENCHANT_LIBS) \ + $(FREETYPE_LIBS) \ + $(GAIL_LIBS) \ + $(GEOCLUE_LIBS) \ + $(GLIB_LIBS) \ + $(GSTREAMER_LIBS) \ + $(GTK_LIBS) \ + $(HILDON_LIBS) \ + $(JPEG_LIBS) \ + $(LIBSOUP_LIBS) \ + $(LIBXML_LIBS) \ + $(LIBXSLT_LIBS) \ + $(PANGO_LIBS) \ + $(PNG_LIBS) \ + $(SQLITE3_LIBS) \ + $(UNICODE_LIBS) \ + $(XT_LIBS) \ + $(WINMM_LIBS) \ + $(SHLWAPI_LIBS) \ + $(OLE32_LIBS) + +webkitgtk_static_h_api += \ + $(srcdir)/Source/WebCore/platform/network/soup/cache/webkit/soup-cache.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkit.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitdefines.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitdownload.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkiterror.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitglobals.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkithittestresult.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitnetworkrequest.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitnetworkresponse.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitsecurityorigin.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitviewportattributes.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebdatabase.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebdatasource.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebframe.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebinspector.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebplugin.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebresource.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebsettings.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h \ + $(srcdir)/Source/WebKit/gtk/webkit/webkitwebview.h + +webkitgtk_built_h_api += \ + Source/WebKit/gtk/webkit/webkitversion.h + +webkitgtk_h_api += \ + $(webkitgtk_built_h_api) \ + $(webkitgtk_static_h_api) + +# webkitenumtypes.{h,cpp} cannot be in webkitgtk_built_h_api, because +# the rule that builds it depends on webkitgtk_built_h_api (circular dependency). +webkitgtk_built_sources += \ + DerivedSources/webkit/webkitenumtypes.cpp \ + DerivedSources/webkit/webkitenumtypes.h \ + DerivedSources/webkit/webkitmarshal.cpp \ + DerivedSources/webkit/webkitmarshal.h \ + $(webkitgtk_built_h_api) \ + $(webkitgtk_gdom_built_sources) +BUILT_SOURCES += $(webkitgtk_built_sources) + +webkitgtk_sources += \ + Source/WebCore/bindings/gobject/ConvertToUTF8String.cpp \ + Source/WebCore/bindings/gobject/ConvertToUTF8String.h \ + Source/WebCore/bindings/gobject/DOMObjectCache.cpp \ + Source/WebCore/bindings/gobject/DOMObjectCache.h \ + Source/WebCore/bindings/gobject/GObjectEventListener.cpp \ + Source/WebCore/bindings/gobject/GObjectEventListener.h \ + Source/WebCore/bindings/gobject/WebKitDOMBinding.cpp \ + Source/WebCore/bindings/gobject/WebKitDOMBinding.h \ + Source/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp \ + Source/WebCore/bindings/gobject/WebKitDOMEventTarget.h \ + Source/WebCore/bindings/gobject/WebKitDOMEventTargetPrivate.h \ + Source/WebCore/bindings/gobject/WebKitDOMObject.cpp \ + Source/WebCore/bindings/gobject/WebKitDOMObject.h \ + Source/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp \ + Source/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h \ + Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h \ + Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h \ + Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h \ + Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp \ + Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h \ + Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \ + Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp \ + Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h \ + Source/WebKit/gtk/webkit/webkitapplicationcache.cpp \ + Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h \ + Source/WebKit/gtk/webkit/webkitdownload.cpp \ + Source/WebKit/gtk/webkit/webkitdownloadprivate.h \ + Source/WebKit/gtk/webkit/webkiterror.cpp \ + Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp \ + Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h \ + Source/WebKit/gtk/webkit/webkitglobals.cpp \ + Source/WebKit/gtk/webkit/webkitglobals.h \ + Source/WebKit/gtk/webkit/webkitglobalsprivate.h \ + Source/WebKit/gtk/webkit/webkithittestresult.cpp \ + Source/WebKit/gtk/webkit/webkithittestresultprivate.h \ + Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp \ + Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h \ + Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp \ + Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h \ + Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp \ + Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h \ + Source/WebKit/gtk/webkit/webkitsoupauthdialog.c \ + Source/WebKit/gtk/webkit/webkitversion.cpp \ + Source/WebKit/gtk/webkit/webkitviewportattributes.cpp \ + Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h \ + Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \ + Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h \ + Source/WebKit/gtk/webkit/webkitwebdatabase.cpp \ + Source/WebKit/gtk/webkit/webkitwebdatasource.cpp \ + Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h \ + Source/WebKit/gtk/webkit/webkitwebframe.cpp \ + Source/WebKit/gtk/webkit/webkitwebframeprivate.h \ + Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp \ + Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h \ + Source/WebKit/gtk/webkit/webkitwebinspector.cpp \ + Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h \ + Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp \ + Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h \ + Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp \ + Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h \ + Source/WebKit/gtk/webkit/webkitwebresource.cpp \ + Source/WebKit/gtk/webkit/webkitwebresourceprivate.h \ + Source/WebKit/gtk/webkit/webkitwebplugin.cpp \ + Source/WebKit/gtk/webkit/webkitwebpluginprivate.h \ + Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp \ + Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h \ + Source/WebKit/gtk/webkit/webkitwebsettings.cpp \ + Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h \ + Source/WebKit/gtk/webkit/webkitwebview.cpp \ + Source/WebKit/gtk/webkit/webkitwebviewprivate.h \ + Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp \ + Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = Source/WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc + +if ENABLE_INTROSPECTION + +JSCore-@WEBKITGTK_API_VERSION@.gir: $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir + $(AM_V_GEN)cp $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir $(top_builddir)/ + +JSCORE_GIRSOURCES += JSCore-@WEBKITGTK_API_VERSION@.gir +WEBKIT_GIRSOURCES += WebKit-@WEBKITGTK_API_VERSION@.gir + +$(WEBKIT_GIRSOURCES): $(G_IR_SCANNER) $(JSCORE_GIRSOURCES) libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la + $(AM_V_GEN)$(G_IR_SCANNER) -v --warn-all \ + --symbol-prefix=webkit \ + --identifier-prefix=WebKit \ + --namespace=WebKit \ + --nsversion=@WEBKITGTK_API_VERSION@ \ + --include=GObject-2.0 \ + --include=Gtk-@GTK_API_VERSION@ \ + --include=JSCore-@WEBKITGTK_API_VERSION@ \ + --include=Soup-2.4 \ + --library=webkitgtk-@WEBKITGTK_API_VERSION@ \ + --libtool="$(LIBTOOL)" \ + --pkg=gobject-2.0 \ + --pkg=gtk+-@GTK_API_VERSION@ \ + --pkg=libsoup-2.4 \ + --output=$@ \ + --add-include-path=$(WebKit) \ + --add-include-path=$(top_builddir) \ + -I$(srcdir)/Source \ + -I$(top_srcdir)/Source/WebCore/platform/network/soup/cache \ + -I$(WebKit) \ + -I$(GENSOURCES) \ + -I$(GENSOURCES_WEBKIT) \ + -I$(top_builddir)/Source/WebKit/gtk \ + -I$(top_srcdir)/Source/JavaScriptCore/ForwardingHeaders \ + -I$(top_srcdir) \ + $(GENSOURCES_WEBKIT)/webkitenumtypes.h \ + $(webkitgtk_h_api) \ + $(WebKit)/webkit/*.cpp \ + $(WebKit)/webkit/*.c + +girdir = $(datadir)/gir-1.0 +gir_DATA = $(WEBKIT_GIRSOURCES) $(JSCORE_GIRSOURCES) + +typelibsdir += $(libdir)/girepository-1.0 +typelibs_DATA += $(JSCORE_GIRSOURCES:.gir=.typelib) $(WEBKIT_GIRSOURCES:.gir=.typelib) + +%.typelib: %.gir $(G_IR_COMPILER) + $(AM_V_GEN)$(G_IR_COMPILER) --includedir $(WebKit) --includedir $(top_builddir) $< -o $@ + +CLEANFILES += $(JSCORE_GIRSOURCES) $(WEBKIT_GIRSOURCES) $(typelibs_DATA) + +endif + +EXTRA_DIST += $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir + +WEBKIT_MARSHAL_LIST = $(WebKit)/webkitmarshal.list +$(GENSOURCES_WEBKIT)/webkitmarshal.cpp: stamp-webkitmarshal.cpp + @true +$(GENSOURCES_WEBKIT)/webkitmarshal.h: stamp-webkitmarshal.h + @true + +stamp-webkitmarshal.cpp: $(WEBKIT_MARSHAL_LIST) + $(AM_V_GEN) echo "extern \"C\" {" > $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \ + $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \ + echo '}' >> $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \ + echo timestamp > $(@F) + +stamp-webkitmarshal.h: $(WEBKIT_MARSHAL_LIST) + $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(GENSOURCES_WEBKIT)/webkitmarshal.h && \ + echo timestamp > $(@F) + +$(GENSOURCES_WEBKIT)/webkitenumtypes.h: stamp-webkitenumtypes.h + @true +stamp-webkitenumtypes.h: $(webkitgtk_h_api) $(WebKit)/GNUmakefile.am + $(AM_V_GEN)glib-mkenums \ + --fhead "#ifndef WEBKIT_ENUM_TYPES_H\n" \ + --fhead "#define WEBKIT_ENUM_TYPES_H\n\n" \ + --fhead "#include <glib-object.h>\n\n" \ + --fhead "#include <webkit/webkitdefines.h>\n\n" \ + --fhead "G_BEGIN_DECLS\n\n" \ + --ftail "G_END_DECLS\n\n" \ + --ftail "#endif\n" \ + --fprod "#include <webkit/@basename@>\n\n" \ + --eprod "#define WEBKIT_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n\n" \ + --eprod "WEBKIT_API GType\n@enum_name@_get_type(void);\n\n" \ + $(webkitgtk_h_api) | \ + sed 's,web_kit,webkit,' | \ + sed 's,WEBKIT_TYPE_KIT,WEBKIT_TYPE,' \ + > xgen-gth \ + && (cmp -s xgen-gth $(GENSOURCES_WEBKIT)/webkitenumtypes.h || cp xgen-gth $(GENSOURCES_WEBKIT)/webkitenumtypes.h) \ + && rm -f xgen-gth \ + && echo timestamp > $(@F) + +$(GENSOURCES_WEBKIT)/webkitenumtypes.cpp: $(webkitgtk_h_api) $(WebKit)/GNUmakefile.am + $(AM_V_GEN)glib-mkenums \ + --fhead "#include <config.h>\n" \ + --fhead "#include <glib-object.h>\n" \ + --fhead "#include \"$(GENSOURCES_WEBKIT)/webkitenumtypes.h\"\n\n" \ + --fhead "extern \"C\" {\n\n" \ + --fprod "\n/* enumerations from \"@filename@\" */" \ + --vhead "static const G@Type@Value _@enum_name@_values[] = {" \ + --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ + --vtail " { 0, NULL, NULL }\n};\n\n" \ + --vtail "GType @enum_name@_get_type(void)\n{\n" \ + --vtail " static GType type = 0;\n\n" \ + --vtail " if (!type)\n" \ + --vtail " type = g_@type@_register_static(\"@EnumName@\", _@enum_name@_values);\n\n" \ + --vtail " return type;\n}\n\n" \ + --ftail "}\n" \ + $(webkitgtk_h_api) | \ + sed 's,web_kit,webkit,' \ + > xgen-gtc \ + && cp xgen-gtc $@ \ + && rm -f xgen-gtc + +# GSettings +if USE_GSETTINGS +gsettings_SCHEMAS = $(top_builddir)/Source/WebKit/gtk/org.webkitgtk-@WEBKITGTK_API_VERSION@.gschema.xml +@GSETTINGS_RULES@ +endif + +EXTRA_DIST += \ + $(WebKit)/ChangeLog \ + $(WebKit)/NEWS \ + $(WebKit)/webkitmarshal.list \ + $(WebKit)/docs/GNUmakefile.* \ + $(WebKit)/docs/webkitenvironment.xml \ + $(WebKit)/docs/webkitgtk-docs.sgml \ + $(WebKit)/docs/webkitgtk-sections.txt \ + $(WebKit)/docs/version.xml.in \ + $(WebKit)/po/* \ + $(WebKit)/resources/* \ + $(WebKit)/tests/resources/* \ + $(WebKit)/tests/test_utils.h \ + $(WebKit)/org.webkitgtk.gschema.xml.in + +# extra resource files +resourcesdir = ${datadir}/webkit-@WEBKITGTK_API_VERSION@/resources +dist_resources_DATA = \ + $(shell ls $(srcdir)/Source/WebKit/gtk/resources/*.html) + +# Build unit tests +noinst_PROGRAMS += $(TEST_PROGS) +webkit_tests_cflags = \ + -fno-strict-aliasing \ + -I$(srcdir)/Source/JavaScriptCore/ForwardingHeaders \ + -I$(WebCore)/platform/network/soup/cache \ + -I$(WebKit) \ + -I$(GENSOURCES) \ + -I$(top_builddir)/Source/WebKit/gtk \ + -I$(top_srcdir)/Source/WebCore/bindings \ + -I$(top_srcdir)/Source/WebCore/bindings/gobject \ + $(global_cppflags) \ + $(global_cflags) \ + $(javascriptcore_cppflags) \ + $(GLIB_CFLAGS) \ + $(GTK_CFLAGS) \ + $(LIBSOUP_CFLAGS) + +webkit_tests_ldadd = \ + libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \ + $(GTK_LIBS) \ + $(GLIB_LIBS) \ + $(LIBSOUP_LIBS) + +webkit_tests_ldflags = \ + -no-install \ + -no-fast-install + +TEST_PROGS += \ + Programs/unittests/testdomdocument \ + Programs/unittests/testdomdomwindow \ + Programs/unittests/testdomnode \ + Programs/unittests/testhttpbackend \ + Programs/unittests/testloading \ + Programs/unittests/testglobals \ + Programs/unittests/testmimehandling \ + Programs/unittests/testnetworkrequest \ + Programs/unittests/testnetworkresponse \ + Programs/unittests/testwebframe \ + Programs/unittests/testwebbackforwardlist \ + Programs/unittests/testwebhistoryitem \ + Programs/unittests/testwindow \ + Programs/unittests/testdownload \ + Programs/unittests/testatk \ + Programs/unittests/testatkroles \ + Programs/unittests/testhittestresult \ + Programs/unittests/testwebsettings \ + Programs/unittests/testwebresource \ + Programs/unittests/testwebdatasource \ + Programs/unittests/testwebplugindatabase \ + Programs/unittests/testwebview \ + Programs/unittests/testkeyevents \ + Programs/unittests/testcopyandpaste + +# Add additional tests here +Programs_unittests_testdomdocument_SOURCES = Source/WebKit/gtk/tests/testdomdocument.c +Programs_unittests_testdomdocument_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testdomdocument_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testdomdocument_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testdomdomwindow_SOURCES = Source/WebKit/gtk/tests/testdomdomwindow.c +Programs_unittests_testdomdomwindow_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testdomdomwindow_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testdomdomwindow_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testdomnode_SOURCES = Source/WebKit/gtk/tests/testdomnode.c +Programs_unittests_testdomnode_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testdomnode_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testdomnode_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testhttpbackend_SOURCES = Source/WebKit/gtk/tests/testhttpbackend.c +Programs_unittests_testhttpbackend_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testhttpbackend_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testhttpbackend_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testglobals_SOURCES = Source/WebKit/gtk/tests/testglobals.c +Programs_unittests_testglobals_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testglobals_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testglobals_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testloading_SOURCES = Source/WebKit/gtk/tests/testloading.c +Programs_unittests_testloading_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testloading_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testloading_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testmimehandling_SOURCES = Source/WebKit/gtk/tests/testmimehandling.c Source/WebKit/gtk/tests/test_utils.c +Programs_unittests_testmimehandling_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testmimehandling_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testmimehandling_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testnetworkrequest_SOURCES = Source/WebKit/gtk/tests/testnetworkrequest.c +Programs_unittests_testnetworkrequest_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testnetworkrequest_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testnetworkrequest_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testnetworkresponse_SOURCES = Source/WebKit/gtk/tests/testnetworkresponse.c +Programs_unittests_testnetworkresponse_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testnetworkresponse_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testnetworkresponse_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebframe_SOURCES = Source/WebKit/gtk/tests/testwebframe.c +Programs_unittests_testwebframe_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebframe_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebframe_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebplugindatabase_SOURCES = Source/WebKit/gtk/tests/testwebplugindatabase.c +Programs_unittests_testwebplugindatabase_CFLAGS = -DTEST_PLUGIN_DIR=\"${shell pwd}/${top_builddir}/TestNetscapePlugin/.libs\" $(webkit_tests_cflags) +Programs_unittests_testwebplugindatabase_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebplugindatabase_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebbackforwardlist_SOURCES = Source/WebKit/gtk/tests/testwebbackforwardlist.c +Programs_unittests_testwebbackforwardlist_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebbackforwardlist_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebbackforwardlist_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebhistoryitem_SOURCES = Source/WebKit/gtk/tests/testwebhistoryitem.c +Programs_unittests_testwebhistoryitem_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebhistoryitem_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebhistoryitem_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwindow_SOURCES = Source/WebKit/gtk/tests/testwindow.c +Programs_unittests_testwindow_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwindow_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwindow_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testdownload_SOURCES = Source/WebKit/gtk/tests/testdownload.c +Programs_unittests_testdownload_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testdownload_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testdownload_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testatk_SOURCES = Source/WebKit/gtk/tests/testatk.c +Programs_unittests_testatk_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testatk_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testatk_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testatkroles_SOURCES = Source/WebKit/gtk/tests/testatkroles.c +Programs_unittests_testatkroles_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testatkroles_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testatkroles_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebsettings_SOURCES = Source/WebKit/gtk/tests/testwebsettings.c +Programs_unittests_testwebsettings_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebsettings_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebsettings_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testwebresource_SOURCES = Source/WebKit/gtk/tests/testwebresource.c +Programs_unittests_testwebresource_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebresource_LDADD = $(webkit_tests_ldadd) + +Programs_unittests_testwebdatasource_SOURCES = Source/WebKit/gtk/tests/testwebdatasource.c +Programs_unittests_testwebdatasource_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebdatasource_LDADD = $(webkit_tests_ldadd) + +Programs_unittests_testwebview_SOURCES = Source/WebKit/gtk/tests/testwebview.c Source/WebKit/gtk/tests/test_utils.c +Programs_unittests_testwebview_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testwebview_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testwebview_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testhittestresult_SOURCES = Source/WebKit/gtk/tests/testhittestresult.c +Programs_unittests_testhittestresult_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testhittestresult_LDADD = $(webkit_tests_ldadd) + +Programs_unittests_testkeyevents_SOURCES = Source/WebKit/gtk/tests/testkeyevents.c +Programs_unittests_testkeyevents_CFLAGS = $(webkit_tests_cflags) +Programs_unittests_testkeyevents_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testkeyevents_LDFLAGS = $(webkit_tests_ldflags) + +Programs_unittests_testcopyandpaste_SOURCES = Source/WebKit/gtk/tests/testcopyandpaste.c \ + Source/WebCore/platform/gtk/GtkVersioning.c +Programs_unittests_testcopyandpaste_CFLAGS = $(webkit_tests_cflags) \ + -I$(srcdir)/Source/WebCore/platform/gtk \ + -I$(srcdir)/Source/WebCore +Programs_unittests_testcopyandpaste_LDADD = $(webkit_tests_ldadd) +Programs_unittests_testcopyandpaste_LDFLAGS = $(webkit_tests_ldflags) + +# Project-wide clean rules +# Files that will be cleaned +CLEANFILES += \ + $(BUILT_SOURCES) \ + $(top_builddir)/stamp-webkitmarshal.cpp \ + $(top_builddir)/stamp-webkitmarshal.h \ + $(top_builddir)/stamp-webkitenumtypes.cpp \ + $(top_builddir)/stamp-webkitenumtypes.h \ + $(top_builddir)/Programs/GtkLauncher + +DISTCLEANFILES += \ + $(top_builddir)/Source/WebKit/gtk/docs/version.xml \ + $(top_builddir)/Source/WebKit/gtk/docs/GNUmakefile \ + $(top_builddir)/Source/WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc \ + $(top_builddir)/Source/WebKit/gtk/org.webkitgtk-@WEBKITGTK_API_VERSION@.gschema.xml \ + $(top_builddir)/Source/WebKit/gtk/webkit/webkitversion.h + +dist-hook: + cp $(WebKit)/NEWS $(distdir) +install-data-local: po-install-data-local +installdirs-data-local: po-installdirs-data-local +uninstall-local: po-uninstall-local + +# Run all tests in cwd +# FIXME: we should run this under xvfb +test: $(TEST_PROGS) + $(GTESTER) --verbose $(TEST_PROGS); + +# test-report: run tests in cwd and generate report +# full-report: run tests in cwd with -m perf and -m slow and generate report +# perf-report: run tests in cwd with -m perf and generate report +test-report full-report perf-report: $(TEST_PROGS) + @ case $@ in \ + test-report) test_options="-k";; \ + full-report) test_options="-k -m=perf";; \ + perf-report) test_options="-k -m=perf -m=slow";; \ + esac ; \ + $(GTESTER) --verbose $$test_options -o test-report.xml $(TEST_PROGS); \ + $(GTESTER_REPORT) test-report.xml > test-report.html ; + +.PHONY: test test-report perf-report full-report +check-local: test diff --git a/Source/WebKit/gtk/JSCore.gir.in b/Source/WebKit/gtk/JSCore.gir.in new file mode 100644 index 0000000..e143982 --- /dev/null +++ b/Source/WebKit/gtk/JSCore.gir.in @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<repository version="1.2" + xmlns="http://www.gtk.org/introspection/core/1.0" + xmlns:c="http://www.gtk.org/introspection/c/1.0"> + <namespace name="JSCore" version="@WEBKITGTK_API_VERSION@" shared-library="webkitgtk-@WEBKITGTK_API_VERSION@"> + <alias name="GlobalContextRef" target="none"> + <type name="JSGlobalContextRef" c:type="JSGlobalContextRef"/> + </alias> + <alias name="ObjectRef" target="none"> + <type name="JSObjectRef" c:type="JSObjectRef"/> + </alias> + <function name="EvaluateScript" c:identifier="JSEvaluateScript"> + <return-value transfer-ownership="none"> + <type name="none" c:type="void"/> + </return-value> + <parameters> + </parameters> + </function> + </namespace> +</repository> diff --git a/Source/WebKit/gtk/NEWS b/Source/WebKit/gtk/NEWS new file mode 100644 index 0000000..cf77371 --- /dev/null +++ b/Source/WebKit/gtk/NEWS @@ -0,0 +1,631 @@ +================= +WebKitGTK+ 1.3.10 +================= + +What's new in WebKitGTK+ 1.3.10? + + - Port form control theming code to GtkStyleContext. + - Add a new 'make jsc' target to build only JavaScriptCore and the jsc binary. + - Initial support for drag-and-drop file uploads. + - WOFF font face support. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.9 +================ + +What's new in WebKitGTK+ 1.3.9? + + - Compilation fixes for the final GTK+ 2.91.7 release. + +================ +WebKitGTK+ 1.3.8 +================ + +What's new in WebKitGTK+ 1.3.8? + + - New WebKitWebPluginDatabase and WebKitWebPlugin classes for plugin + management. + - The usual fixes for GTK+ 3.x API changes. We are still using the + old GtkStyle APIs, that should be gone by the next release. + - Add support for Mozilla-style JS fullscreen API. + - Add support for the viewport metatag. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.7 +================ + +What's new in WebKitGTK+ 1.3.7? + + - Fix error pages template's not being filled properly. + - Fix context menu activation through keyboard. + - Add automatic garbage collection for most GObject DOM objects (all + those that are actually in the DOM tree). This gets rid of most of + the leaks when using the bindings. + - Add an Inspector API to inspect a DOM node. + - Tons of a11y bugfixes. + - Tons of fixes for the in-tree SoupCache, should work much better + now. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.6 +================ + +What's new in WebKitGTK+ 1.3.6? + + - Update to compile with GTK+ 3.x 2.91.4. + - Many, many other bugfixes. + +================ +WebKitGTK+ 1.3.5 +================ + +What's new in WebKitGTK+ 1.3.5? + + - Add a HTTP cache implementation. This will be eventually + integrated in libsoup itself, but for now it can be accessed from + WebKit through the WebKitSoupCache APIs. + - Updated to work with GTK+ 3.x 2.91.1. + - Add frame-flattening support, used by some mobile browser sto + merge all frames in a page into a continuous view. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.4 +================ + +What's new in WebKitGTK+ 1.3.4? + + - File reader/writer APIs are now enabled. + - The javascript JIT is now enabled by default on ARM. + - Clipboard data is no longer lost when the process exists. + - Image DnD support. + - GSettings support to save/restore Web Inspector settings. + - Add WebSocket support, now enabled by default. + - Added WebKitWebView::frame-created signal, emitted when a frame + other than the main frame is created in a view. + - Added WebKitWebView::view-mode, holding information about how the + view is being presented. See the property documentation and + http://www.w3.org/TR/view-mode/ for details. + - Fullscreen support for HTML5 media player. + - Identify as WebKit/Safari in Google domains when + enable-site-specific-quirks is activated. Otherwise we'll get a + degraded user experience due to their poor UA detection + algorihtms. + - Added simple media playback options in the context menu for the + media elements. + - Update (and require) to work with gobjet-introspection 0.9.5. + - Updated to work with GTK+ 3.x 2.90.7 when in GTK+ 3.x mode. + - Make --disable-jit actually work. + - Add --enable-opcode-stats configure flag. When enabled, statistics + about opcode generation will be printed by JSC. + - Many a11y fixes, particularly in the AtkText interface. + - CSS box shadows render much faster in many cases. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.3 +================ + +What's new in WebKitGTK+ 1.3.3? + + - Fixes to compile with latest GTK+ 2.90.x. + - Add support for dropping content in WebKitWebViews. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.2 +================ + +What's new in WebKitGTK+ 1.3.2? + +*** This release is an ABI break *** + +The library has been renamed to libwebkitgtk, so you'll need to +recompile your applications when upgrading to 1.3.2. + + - Add support for GTK+ 3.x. A new configure flag, --with-gtk, has + been added, which allows to control which GTK+ version you want to + build against. The default value is '2.0', for GTK+ 2.x + support. With '3.0' the library will be compiled against GTK+ 3.x + (2.90.4 or newer required). In the 3.x mode the .pc file has been + renamed from webkit-X.X.pc to webkitgtk-X.X.pc, so you'll need to + update your autotools setup accordingly. + - Many fixes for the DOM bindings, including support to dispatch + events to any Node through webkit_event_target_dispatch_event. + - Added a 'inner-node' property to WebKitHitTestResult, carrying the + DOM node where the hit test happened. + - Many DnD fixes, including a fix for the infamous hang-of-death + while dragging the mouse. + - Support for <input type="range">. + - Many other bugfixes. + +================ +WebKitGTK+ 1.3.1 +================ + +What's new in WebKitGTK+ 1.3.1? + + - Initial support for GObject DOM bindings. Present in this release + is a substantial subset of the basic DOM APIs (Document, HTML + elements, Node, etc) including access to the DOM events through + GObject signals. Keep in mind that all the APIs are still + unstable, and will probably be subject to changes before the next + stable release. + - Add webkit_web_back_forward_list_clear, to completely clear the + BackForward list. + - Lots of improvements in DOM clipboard and drag-drop access. + - Add support for GTK+ key themes. + - Significant improvements in a11y, including improved role support + and many bugfixes. + +================= +WebKitGTK+ 1.1.90 +================= + +What's new in WebKitGTK+ 1.1.90? + + - Display server side messages during HTTP auth, since they + sometimes contain important information for the authentication + process. + - Reduce creation time for WebKitWebView widgets by reusing + dictionary structs used for spell-checking instead of creating a + new one for each instance. + - Implement WebKitWebView::geolocation-policy-decision-requested, + emitted when a frame inside the WebView wants to get its position + through geolocation. + - Add WebKitWebSettings::enable-spatial-navigation to control + whether Spatial Navigation is enabled or not. Spatial Navigation + allows the user to move through the elements in a page using only + the keyboard; this is similar to caret browsing, but with less + focus on accessibility since instead of presenting the exact + layout of the page to the user a more "logical" way of browsing + through its contents is allowed. A specification of this feature + can be seen at + http://www.w3.org/TR/WICD/#current-focus-point-algorithm + - Add a new build option, --enable-fast-mobile-scrolling. At the + moment this only disables fixed backgrounds when there are no + other fixed elements in a page, since they generally make + scrolling very slow and thus are a big burden in some mobile + environments. + - GTK+ Input Method support has received a big overhaul, and most of + them should work pretty well now. + - All known redraw issues in the plugin support (especially with the + Java plugin) have been fixed. + - Various fixes to the MediaPlayer code to improve responsiveness + and avoid lagging on position reporting. + - Lots of bugfixes and other improvements. + +================= +WebKitGTK+ 1.1.22 +================= + +What's new in WebKitGTK+ 1.1.22? + + - Preliminary support for Java plugins. Basic functionality is + there, but there are still a few rough edges. Also newly + introduced is a new WebKitWebSetting, 'enable-java-applet', which + controls whether WebKit will recognize the non-standard <applet> + tag. + - Add WebKitWebSettings::auto-resize-window; when enabled, WebKit + will act upon the DOM methods that change the size and/or position + of the window containing a WebView (window.{moveTo, resizeTo, + moveBy, resizeBy}). + - Add WebKitWebSettings::enable-file-access-from-file-uris; when + enabled, each file:// URI will be assigned its own security + domain. + - Lots of bugfixes, especially in the PageCache support. + +================= +WebKitGTK+ 1.1.21 +================= + +What's new in WebKitGTK+ 1.1.21? + + - New custom-made GStreamer source element that uses the WebCore + network layer to download media data; this makes sure any headers + and cookies will automatically get added when making requests. + - WebKit will now let libsoup know who the first party for a given + message is, making it possible to implement accept/deny policies in + Soup. + - The usual stream of fixes, and improvements + +================= +WebKitGTK+ 1.1.20 +================= + +What's new in WebKitGTK+ 1.1.20? + + - Fixes to the HTML5 Media Player infrastructure to satisfy sites + that require cookies, and Referer to be sent; this makes + WebKitGTK+ able to support the new HTML5 support added to Youtube, + and Vimeo, for instance. + - Windowless plugin support is finally here, making it possible to + get plugins to behave on various web pages. + - The usual stream of fixes, and improvements + +================= +WebKitGTK+ 1.1.19 +================= + +What's new in WebKitGTK+ 1.1.19? + + - Improvements to AtkText implementation + - RGBA colormap support has been added + - Improvements to the HTML5 media player + - Crashes related to clipboard handling, which were hitting many + users and seemed to be random have been fixed + +================= +WebKitGTK+ 1.1.18 +================= + +What's new in WebKitGTK+ 1.1.18? + + - Add methods to set and get a cache model in WebKitGTK+. We offer + two possibilites: document viewer (no caches are used) and browser + (similar to the previous defaults). + - Add WebKitWebSettings::enable-page-cache. Controls whether the + Page Cache is enabled or not. For details about what the page + cache is and does see + http://webkit.org/blog/427/webkit-page-cache-i-the-basics/ + The page cache is disabled by default, since the gtk+ port still + presents some small bugs when it's enabled. + - Add WebKitWebSettings::enable-site-specific-quirks. Controls + whether a series of page-specific workarounds are used by WebKit. + - Use Content-Encoding support available in libsoup 2.28.2 and + newer. + - Add WebKitWebSettings::enable-default-context-menu. Controls + whether webkitgtk+ will show a default context menu on right click + in the view. Note that even with the property set to FALSE right + clicks can be handled by the page, either by actions or by + ad-hoc in-page context menus. + - Make the WebKitWebView::icon-loaded signal carry a string with the + favicon's URI. This is an API break, but the signal already had a + broken signature and was useless anyway, so it's extremely + unlikely that anybody was using it. Also, add the 'icon-uri' + property to the view, holding the URI for its current favicon. + - Respect Content-Disposition header in downloads (fixes downloads + in gmail). + - Various accessibility improvements. + - Many bugfixes. + +================= +WebKitGTK+ 1.1.17 +================= + +What's new in WebKitGTK+ 1.1.17? + + - New APIs to show and close the web inspector and to inspect an + element at the given coordinates. + - New property, WebKitWebSettings::tab-key-cycles-through-elements, + controls whether TAB is simply interpreted as another keystroke or + is used to cycle through the elements in a page. + - Many a11y improvements. + - The usual amount of random bugfixes. + +================= +WebKitGTK+ 1.1.16 +================= + +What's new in WebKitGTK+ 1.1.16? + + - Add optional support to generate the gobject-introspection + gir/typelib files. Enable with --enable-introspection, it's off by + default. + - Add a new load status value, WEBKIT_LOAD_FAILED, emitted when + there's an error during the load process. This is the natural + companion to WEBKIT_LOAD_FINISHED, which is only emitted when the + load finished succesfuly. + - Ensure that keyboard events filtered by GtkIMContext still create + the proper DOM events. + - Many a11y improvements: caret browsing fixes, expose heading + levels, more accessible roles supported, more work in correctly + showing the element's ancestry list, improved support for lists, + etc. + - Many improvements to our media support. + - Add a new setting to control DOM pastes + (document.execCommand("Paste")) + - Many, many bugfixes all over the place. + +================= +WebKitGTK+ 1.1.15 +================= + +What's new in WebKitGTK+ 1.1.15? + + - New API to get the subresources from a WebKitWebDataSource. This + provides a way of accessing all the resources that compose the + view to which the data source is attached. + - A new function, webkit_web_view_get_hit_test_result, which allows + to do a 'hit test' on the coordinates specified by a mouse + event. A hit test provides context information about that point in + the document, like whether it's an image, a link, an input box, + etc. + - Our DumpRenderTree implementation now supports eventSender, which + allows us to run many more LayoutTests and make WebKitGTK+ more + stable and feature-complete. + - JSNES runs 6x faster: http://trac.webkit.org/changeset/48573 + - The usual small improvements and bugfixes. + +================= +WebKitGTK+ 1.1.14 +================= + +What's new in WebKitGTK+ 1.1.14? + + - New API has been added to WebKitWebFrame to allow applying + scrollbars policy as requested by web applications to the main + frame; if the parent of the WebKitWebView widget is a + GtkScrolledWindow, policy is applied by the default handler. + - A new API has been added to help dealing with the various + resources that are downloaded to compose the final rendering; you + can now obtain the source code for a page that is loaded, for + instance. + - A new property has been added to WebKitWebView to allow setting it + to "View Source" mode. + - HTML5 database has gained API to manage the individual databases, + including usage and quota. + - A new signal `resource-request-starting' has been added to the + WebKitWebView to allow modification of outgoing requests for every + resource. + - Connection limit has been increased to 60 total connections, 6 + per-host, matching other browsers more closely; this seems to have + improved loading time of some sites. + - Undo/redo support has been added to editable texts. + - The usual stream of small improvements and bug fixes. + +================= +WebKitGTK+ 1.1.13 +================= + +What's new in WebKitGTK+ 1.1.13? + + - GNOME Keyring support was removed in favor of the new Password + Manager soup feature; to get exactly the same behavior, + applications should use SoupPasswordManagerGNOME. This requires + libsoup 2.27.91 or newer. + - Several accessibility improvements, including support for testing + the a11y infrastructure in our layout tests. + - You can now enable/disable HTML5 offline application cache using a + new setting added to WebKitWebSettings. + - Drag support has landed, meaning you can start playing with HTML5 + drag and drop support; drop support is still missing. + - A crash with scripts closing windows has been fixed. + - Image cursors support has been added. + - The usual stream of small improvements and bug fixes. + +================= +WebKitGTK+ 1.1.12 +================= + +What's new in WebKitGTK+ 1.1.12? + + - Fix WebKitSoupAuthDialog to only save passwords in gnome-keyring + (if enabled) when authentication succeeds. + - Implement a proper size_request method for WebKitWebView. The + widget will request the size of the whole page as its size + requisition. + - Many a11y improvements. + - The usual amount of other misc fixes. + - WEBKIT_DEBUG variable now accepts channel names in any case + again. + +================= +WebKitGTK+ 1.1.11 +================= + +What's new in WebKitGTK+ 1.1.11? + + - WebKit has got a new feature - a XSS auditor, that should improve + security; this feature is still experimental, and disabled by + default, but applications can enable it using the setting. + - The hackish content sniffing code that was beig used to avoid + pages requesting downloads instead of displaying content has been + replaced by usage of a new Soup feature, which implements proper + content sniffing. + - More accessibility work, including fixes for problems which were + critical for a possible GNOME 2.28 release. + - Pasting rich text from other browsers should now work as expected. + - The usual amount of misc fixes. + +================= +WebKitGTK+ 1.1.10 +================= + +What's new in WebKitGTK+ 1.1.10? + + - WebKitNetworkRequest has now GObject properties for its URI and + the SoupMessage that backs it up. + - Fix AtkText methods get_selection and get_n_selections to not use + the global selection but only the selection that belongs to the + object being used. + - Fix a crasher when emitting the a11y signal 'text-caret-moved' in + some situations with debug builds. + +================ +WebKitGTK+ 1.1.9 +================ + +What's new in WebKitGTK+ 1.1.9? + + - Scrolling once again received a lot of love, and many subtle + problems and bugs were killed, and we now get correct behavior in + acid2; a number of smaller improvements are in the queue. + - Accessibility keeps gaining better support. On this release a lot + of work was done on the AtkText interface implementation. + - WebKitNetworkRequest now carries with it all the information + regarding the request, not only the URI. This means you will no + longer miss headers such as Referer when passing NetworkRequest + objects from a callback to webkit_web_frame_load_request. + +================ +WebKitGTK+ 1.1.8 +================ + +What's new in WebKitGTK+ 1.1.8? + + - We found out that WebKitWebHistoryItems were being kept with a + reference count of 2 instead of 1 as they should; nobody should be + relying on that, but if you hit reference counting problems with + items you were creating yourself, this is for you. + - You can now copy images from the web page to the clipboard. + - Improvements were made to the Plugin handling code. + - Scroll events will now be correctly reported to web applications. + - You can now embed arbitrary widgets as if it was a plugin, with + the new "create-plugin-widget" signal. + - The atk_text_get_text_{at,after,before}_offset methods are now + implemented for all boundary types except LINE_AFTER and + LINE_BEFORE. + - The usual stream of minor fixes and improvements, as always. + +================ +WebKitGTK+ 1.1.7 +================ + +What's new in WebKitGTK+ 1.1.7? + + - This release includes a security fix: + SVGList::insertItemBefore would not perform a bounds check on the + index it was provided, potentially leading to a buffer overflow. + - New frame loading properties supersede various load-* signals, and + are also accessible in the WebView, for convenience, making this + API saner. + - JIT is now supported for X86-64 on Linux, and enabled by default! + - A regression on webkit_web_view_load_string has been fixed, making + it work correctly again when the document uses encodings which may + use more than 1 byte per character. + - Yet more work has been done to the ATK support, caret browsing + support improvements in particular. + - Filenames suggested by the Download functionality now correctly + use the filename given by the host, if available. + - Build fixes for IA64, and AMD64 + - gtk-doc support has also improved, and you should now be able to + cd WebKit/gtk/docs and type make docs, if you --enable-gtk-doc on + configure, as long as you build with srcdir == builddir. + - More crashes and other bugs fixed, and small improvements made + under the hood. + +================ +WebKitGTK+ 1.1.6 +================ + +What's new in WebKitGTK+ 1.1.6? + + - Several ATK support additions and fixes got landed, with many + roles being now implemented, providing better accessibility. + - Caret browsing is now available. + - Spelling check has been implemented using Enchant; the API is + still lacking, and some of the functionality still needs to be + improved, though. + - Error reporting is now available, with default error pages, and + API that allows the application to override the default behavior; + localization of those pages is still not supported, but planned. + - More crashes and other bugs fixed. + +================ +WebKitGTK+ 1.1.5 +================ + +What's new in WebKitGTK+ 1.1.5? + + - Added gtk-doc support to the build system. It is not fully + integrated yet, so some manual tweaking is still needed. + - Minimum required GTK+ version is now 2.10. + - Added l10n support with gettext. Translations are stored in + WebKit/gtk/po/. + - Many improvements to the ATK support. It's good enough to provide + a basic user experience with Accerciser now, but we'll keep + improving it in further releases. + - New printing API that allows applications to control and monitor + the printing process, when requested by javascript or started by + the user. + - Many bugfixes. + +================ +WebKitGTK+ 1.1.4 +================ + +What's new in WebKitGTK+ 1.1.4? + + - WebKitWebView gained uri and title properties, deprecating the + usage of the title-changed signal. + - Basic functionality for HTML5 media tags has been achieved; there + are many unimplented methods, and rough edges still, though. + - Font rendering received quite some love, with layouting, and + memory handling fixes, and at least one less crash. + - A new signal, new-window-policy-decision-requested, has been added + to WebKitWebView, that makes it possible for the application to + correctly decide what to do when new windows are requested. + - A bug that made tooltips for consecutive links not update their + location was fixed. + - Several improvements were made to the HTTP backend, including + making it more robust when talking to servers which send bad + Content-Type headers. + - WebKitWebView now uses the GtkBinding system to handle key events, + which means that the user is now able to customize the keys used + for various operations, and that many subtle bugs have been fixed. + +================ +WebKitGTK+ 1.1.3 +================ + +The 1.1.3 release was just a quick bug fix release, because we made a +mistake in library versioning. + +================ +WebKitGTK+ 1.1.2 +================ + +What's new in WebKitGTK+ 1.1.2? + + - Added support for downloads: a new signal, 'download-requested', + will be emitted by WebKit when a dowload is requested. On top of + that, the download process has been encapsulated in a new object, + WebKitDownload, which allows the user to control it or to start + new downloads from the client side. + - Added webkit_web_view_get_encoding to get the automatic encoding + of the current page. + - Added GObject properties for 'encoding' and 'custom-encoding'. + - Added 'javascript-profiling-enabled' property to the WebInspector, + which allows to enable and disable the profiling functionality. + - Added API to create and add history items to WebKit's history. + - Improved debugging support with WEBKIT_DEBUG environment + variable. Most of the settings will only give useful output for + debug builds, but WEBKIT_DEBUG=Network will log all HTTP traffic + form libsoup to console. See WebCore/platform/gtk/LoggingGtk.cpp + for all the options available. + - Lots of bugfixes. + +================ +WebKitGTK+ 1.1.1 +================ + +What's new in WebKitGTK+ 1.1.1? + + - ABI compatibility with 1.0.3 was broken, so you will need to + recompile your application against 1.1.1 + - Support for the CURL backend was dropped, libsoup is the only HTTP + backend now. + - webkit_get_default_session, to get the SoupSession used internally + by WebKit. + - 'create-web-view' signal, emitted when the creation of a new + window is requested. + - 'navigation-policy-decision-requested' signal, emitted when a + navigation to another page is requested. + - 'mime-type-policy-decision-requested' signal, emitted each time + WebKit is about to show a URI with a given MIME type. + - Support for the Web Inspector + (see http://webkit.org/blog/197/web-inspector-redesign/) + - HTTP authentication support, with optional gnome-keyring storage. + - New load functions: webkit_web_view_open, webkit_web_view_load_uri + and webkit_web_view_load_request. The old + webkit_web_view_load_string and webkit_web_view_load_html_string + are now deprecated. + - webkit_web_view_reload_bypass_cache + - webkit_web_view_{get,set}_custom_encoding, to override the + encoding of the current page. + - Improved stability and lots of bugfixes. + diff --git a/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp new file mode 100644 index 0000000..8b6a483 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp @@ -0,0 +1,731 @@ +/* + * Copyright (C) 2007, 2008 Holger Hans Peter Freyther + * Copyright (C) 2007, 2008 Christian Dywan <christian@imendio.com> + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2008 Alp Toker <alp@atoker.com> + * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org> + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "ChromeClientGtk.h" + +#include "Chrome.h" +#include "Console.h" +#include "DumpRenderTreeSupportGtk.h" +#include "Element.h" +#include "FileChooser.h" +#include "FileSystem.h" +#include "FloatRect.h" +#include "FrameLoadRequest.h" +#include "FrameView.h" +#include "GtkVersioning.h" +#include "HTMLNames.h" +#include "HitTestResult.h" +#include "Icon.h" +#include "IntRect.h" +#include "KURL.h" +#include "NavigationAction.h" +#include "NotImplemented.h" +#include "PlatformString.h" +#include "PopupMenuClient.h" +#include "PopupMenuGtk.h" +#include "SearchPopupMenuGtk.h" +#include "SecurityOrigin.h" +#include "WindowFeatures.h" +#include "webkitgeolocationpolicydecision.h" +#include "webkitgeolocationpolicydecisionprivate.h" +#include "webkitnetworkrequest.h" +#include "webkitsecurityoriginprivate.h" +#include "webkitviewportattributesprivate.h" +#include "webkitwebframeprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include "webkitwebwindowfeaturesprivate.h" +#include <glib.h> +#include <glib/gi18n-lib.h> +#include <gtk/gtk.h> +#include <wtf/text/CString.h> + +#if ENABLE(DATABASE) +#include "DatabaseTracker.h" +#endif + +using namespace WebCore; + +namespace WebKit { + +ChromeClient::ChromeClient(WebKitWebView* webView) + : m_webView(webView) + , m_closeSoonTimer(0) +{ + ASSERT(m_webView); +} + +void ChromeClient::chromeDestroyed() +{ + delete this; +} + +FloatRect ChromeClient::windowRect() +{ + GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); + if (gtk_widget_is_toplevel(window)) { + gint left, top, width, height; + gtk_window_get_position(GTK_WINDOW(window), &left, &top); + gtk_window_get_size(GTK_WINDOW(window), &width, &height); + return IntRect(left, top, width, height); + } + return FloatRect(); +} + +void ChromeClient::setWindowRect(const FloatRect& rect) +{ + IntRect intrect = IntRect(rect); + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + + g_object_set(webWindowFeatures, + "x", intrect.x(), + "y", intrect.y(), + "width", intrect.width(), + "height", intrect.height(), + NULL); + + gboolean autoResizeWindow; + WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView); + g_object_get(settings, "auto-resize-window", &autoResizeWindow, NULL); + + if (!autoResizeWindow) + return; + + GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); + if (gtk_widget_is_toplevel(window)) { + gtk_window_move(GTK_WINDOW(window), intrect.x(), intrect.y()); + gtk_window_resize(GTK_WINDOW(window), intrect.width(), intrect.height()); + } +} + +FloatRect ChromeClient::pageRect() +{ + GtkAllocation allocation; +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_get_allocation(GTK_WIDGET(m_webView), &allocation); +#else + allocation = GTK_WIDGET(m_webView)->allocation; +#endif + return IntRect(allocation.x, allocation.y, allocation.width, allocation.height); +} + +float ChromeClient::scaleFactor() +{ + // Not implementable + return 1.0; +} + +void ChromeClient::focus() +{ + gtk_widget_grab_focus(GTK_WIDGET(m_webView)); +} + +void ChromeClient::unfocus() +{ + GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); + if (gtk_widget_is_toplevel(window)) + gtk_window_set_focus(GTK_WINDOW(window), NULL); +} + +Page* ChromeClient::createWindow(Frame* frame, const FrameLoadRequest& frameLoadRequest, const WindowFeatures& coreFeatures, const NavigationAction&) +{ + WebKitWebView* webView = 0; + + g_signal_emit_by_name(m_webView, "create-web-view", kit(frame), &webView); + + if (!webView) + return 0; + + GRefPtr<WebKitWebWindowFeatures> webWindowFeatures(adoptGRef(kitNew(coreFeatures))); + g_object_set(webView, "window-features", webWindowFeatures.get(), NULL); + + return core(webView); +} + +void ChromeClient::show() +{ + webkit_web_view_notify_ready(m_webView); +} + +bool ChromeClient::canRunModal() +{ + notImplemented(); + return false; +} + +void ChromeClient::runModal() +{ + notImplemented(); +} + +void ChromeClient::setToolbarsVisible(bool visible) +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + + g_object_set(webWindowFeatures, "toolbar-visible", visible, NULL); +} + +bool ChromeClient::toolbarsVisible() +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + gboolean visible; + + g_object_get(webWindowFeatures, "toolbar-visible", &visible, NULL); + return visible; +} + +void ChromeClient::setStatusbarVisible(bool visible) +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + + g_object_set(webWindowFeatures, "statusbar-visible", visible, NULL); +} + +bool ChromeClient::statusbarVisible() +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + gboolean visible; + + g_object_get(webWindowFeatures, "statusbar-visible", &visible, NULL); + return visible; +} + +void ChromeClient::setScrollbarsVisible(bool visible) +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + + g_object_set(webWindowFeatures, "scrollbar-visible", visible, NULL); +} + +bool ChromeClient::scrollbarsVisible() { + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + gboolean visible; + + g_object_get(webWindowFeatures, "scrollbar-visible", &visible, NULL); + return visible; +} + +void ChromeClient::setMenubarVisible(bool visible) +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + + g_object_set(webWindowFeatures, "menubar-visible", visible, NULL); +} + +bool ChromeClient::menubarVisible() +{ + WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView); + gboolean visible; + + g_object_get(webWindowFeatures, "menubar-visible", &visible, NULL); + return visible; +} + +void ChromeClient::setResizable(bool) +{ + // Ignored for now +} + +static gboolean emitCloseWebViewSignalLater(WebKitWebView* view) +{ + gboolean isHandled; + g_signal_emit_by_name(view, "close-web-view", &isHandled); + return FALSE; +} + +void ChromeClient::closeWindowSoon() +{ + // We may not have a WebView as create-web-view can return NULL. + if (!m_webView) + return; + if (m_closeSoonTimer) // Don't call close-web-view more than once. + return; + + // We need to remove the parent WebView from WebViewSets here, before it actually + // closes, to make sure that JavaScript code that executes before it closes + // can't find it. Otherwise, window.open will select a closed WebView instead of + // opening a new one <rdar://problem/3572585>. + m_webView->priv->corePage->setGroupName(""); + + // We also need to stop the load to prevent further parsing or JavaScript execution + // after the window has torn down <rdar://problem/4161660>. + webkit_web_view_stop_loading(m_webView); + + // Clients commonly destroy the web view during the close-web-view signal, but our caller + // may need to send more signals to the web view. For instance, if this happened in the + // onload handler, it will need to call FrameLoaderClient::dispatchDidHandleOnloadEvents. + // Instead of firing the close-web-view signal now, fire it after the caller finishes. + // This seems to match the Mac/Windows port behavior. + m_closeSoonTimer = g_timeout_add(0, reinterpret_cast<GSourceFunc>(emitCloseWebViewSignalLater), m_webView); +} + +bool ChromeClient::canTakeFocus(FocusDirection) +{ + return gtk_widget_get_can_focus(GTK_WIDGET(m_webView)); +} + +void ChromeClient::takeFocus(FocusDirection) +{ + unfocus(); +} + +void ChromeClient::focusedNodeChanged(Node*) +{ +} + +void ChromeClient::focusedFrameChanged(Frame*) +{ +} + +bool ChromeClient::canRunBeforeUnloadConfirmPanel() +{ + return true; +} + +bool ChromeClient::runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame) +{ + return runJavaScriptConfirm(frame, message); +} + +void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceId) +{ + gboolean retval; + g_signal_emit_by_name(m_webView, "console-message", message.utf8().data(), lineNumber, sourceId.utf8().data(), &retval); +} + +void ChromeClient::runJavaScriptAlert(Frame* frame, const String& message) +{ + gboolean retval; + g_signal_emit_by_name(m_webView, "script-alert", kit(frame), message.utf8().data(), &retval); +} + +bool ChromeClient::runJavaScriptConfirm(Frame* frame, const String& message) +{ + gboolean retval; + gboolean didConfirm; + g_signal_emit_by_name(m_webView, "script-confirm", kit(frame), message.utf8().data(), &didConfirm, &retval); + return didConfirm == TRUE; +} + +bool ChromeClient::runJavaScriptPrompt(Frame* frame, const String& message, const String& defaultValue, String& result) +{ + gboolean retval; + gchar* value = 0; + g_signal_emit_by_name(m_webView, "script-prompt", kit(frame), message.utf8().data(), defaultValue.utf8().data(), &value, &retval); + if (value) { + result = String::fromUTF8(value); + g_free(value); + return true; + } + return false; +} + +void ChromeClient::setStatusbarText(const String& string) +{ + CString stringMessage = string.utf8(); + g_signal_emit_by_name(m_webView, "status-bar-text-changed", stringMessage.data()); +} + +bool ChromeClient::shouldInterruptJavaScript() +{ + notImplemented(); + return false; +} + +bool ChromeClient::tabsToLinks() const +{ + if (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()) + return DumpRenderTreeSupportGtk::linksIncludedInFocusChain(); + + return true; +} + +IntRect ChromeClient::windowResizerRect() const +{ + notImplemented(); + return IntRect(); +} + +void ChromeClient::invalidateWindow(const IntRect&, bool) +{ + notImplemented(); +} + +void ChromeClient::invalidateContentsAndWindow(const IntRect& updateRect, bool immediate) +{ + GdkRectangle rect = updateRect; + GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(m_webView)); + + if (window) { + gdk_window_invalidate_rect(window, &rect, FALSE); + // We don't currently do immediate updates since they delay other UI elements. + //if (immediate) + // gdk_window_process_updates(window, FALSE); + } +} + +void ChromeClient::invalidateContentsForSlowScroll(const IntRect& updateRect, bool immediate) +{ + invalidateContentsAndWindow(updateRect, immediate); +} + +void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, const IntRect& clipRect) +{ + GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(m_webView)); + if (!window) + return; + + // We cannot use gdk_window_scroll here because it is only able to + // scroll the whole window at once, and we often need to scroll + // portions of the window only (think frames). + GdkRectangle area = clipRect; + GdkRectangle moveRect; + + GdkRectangle sourceRect = area; + sourceRect.x -= delta.width(); + sourceRect.y -= delta.height(); + +#ifdef GTK_API_VERSION_2 + GdkRegion* invalidRegion = gdk_region_rectangle(&area); + + if (gdk_rectangle_intersect(&area, &sourceRect, &moveRect)) { + GdkRegion* moveRegion = gdk_region_rectangle(&moveRect); + gdk_window_move_region(window, moveRegion, delta.width(), delta.height()); + gdk_region_offset(moveRegion, delta.width(), delta.height()); + gdk_region_subtract(invalidRegion, moveRegion); + gdk_region_destroy(moveRegion); + } + + gdk_window_invalidate_region(window, invalidRegion, FALSE); + gdk_region_destroy(invalidRegion); +#else + cairo_region_t* invalidRegion = cairo_region_create_rectangle(&area); + + if (gdk_rectangle_intersect(&area, &sourceRect, &moveRect)) { + cairo_region_t* moveRegion = cairo_region_create_rectangle(&moveRect); + gdk_window_move_region(window, moveRegion, delta.width(), delta.height()); + cairo_region_translate(moveRegion, delta.width(), delta.height()); + cairo_region_subtract(invalidRegion, moveRegion); + cairo_region_destroy(moveRegion); + } + + gdk_window_invalidate_region(window, invalidRegion, FALSE); + cairo_region_destroy(invalidRegion); +#endif + + gdk_window_process_updates(window, TRUE); +} + +// FIXME: this does not take into account the WM decorations +static IntPoint widgetScreenPosition(GtkWidget* widget) +{ + GtkWidget* window = gtk_widget_get_toplevel(widget); + int widgetX = 0, widgetY = 0; + + gtk_widget_translate_coordinates(widget, window, 0, 0, &widgetX, &widgetY); + + IntPoint result(widgetX, widgetY); + int originX, originY; + gdk_window_get_origin(gtk_widget_get_window(window), &originX, &originY); + result.move(originX, originY); + + return result; +} + +IntRect ChromeClient::windowToScreen(const IntRect& rect) const +{ + IntRect result(rect); + IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView)); + result.move(screenPosition.x(), screenPosition.y()); + + return result; +} + +IntPoint ChromeClient::screenToWindow(const IntPoint& point) const +{ + IntPoint result(point); + IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView)); + result.move(-screenPosition.x(), -screenPosition.y()); + + return result; +} + +PlatformPageClient ChromeClient::platformPageClient() const +{ + return GTK_WIDGET(m_webView); +} + +void ChromeClient::contentsSizeChanged(Frame* frame, const IntSize& size) const +{ + // We need to queue a resize request only if the size changed, + // otherwise we get into an infinite loop! + GtkWidget* widget = GTK_WIDGET(m_webView); + GtkRequisition requisition; +#if GTK_CHECK_VERSION(2, 20, 0) + gtk_widget_get_requisition(widget, &requisition); +#else + requisition = widget->requisition; +#endif + if (gtk_widget_get_realized(widget) + && (requisition.height != size.height()) + || (requisition.width != size.width())) + gtk_widget_queue_resize_no_redraw(widget); +} + +void ChromeClient::scrollbarsModeDidChange() const +{ + WebKitWebFrame* webFrame = webkit_web_view_get_main_frame(m_webView); + + g_object_notify(G_OBJECT(webFrame), "horizontal-scrollbar-policy"); + g_object_notify(G_OBJECT(webFrame), "vertical-scrollbar-policy"); + + gboolean isHandled; + g_signal_emit_by_name(webFrame, "scrollbars-policy-changed", &isHandled); + + if (isHandled) + return; + + GtkWidget* parent = gtk_widget_get_parent(GTK_WIDGET(m_webView)); + if (!parent || !GTK_IS_SCROLLED_WINDOW(parent)) + return; + + GtkPolicyType horizontalPolicy = webkit_web_frame_get_horizontal_scrollbar_policy(webFrame); + GtkPolicyType verticalPolicy = webkit_web_frame_get_vertical_scrollbar_policy(webFrame); + + // ScrolledWindow doesn't like to display only part of a widget if + // the scrollbars are completely disabled; We have a disparity + // here on what the policy requested by the web app is and what we + // can represent; the idea is not to show scrollbars, only. + if (horizontalPolicy == GTK_POLICY_NEVER) + horizontalPolicy = GTK_POLICY_AUTOMATIC; + + if (verticalPolicy == GTK_POLICY_NEVER) + verticalPolicy = GTK_POLICY_AUTOMATIC; + + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(parent), + horizontalPolicy, verticalPolicy); +} + +void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned modifierFlags) +{ + // check if the element is a link... + bool isLink = hit.isLiveLink(); + if (isLink) { + KURL url = hit.absoluteLinkURL(); + if (!url.isEmpty() && url != m_hoveredLinkURL) { + TextDirection dir; + CString titleString = hit.title(dir).utf8(); + CString urlString = url.prettyURL().utf8(); + g_signal_emit_by_name(m_webView, "hovering-over-link", titleString.data(), urlString.data()); + m_hoveredLinkURL = url; + } + } else if (!isLink && !m_hoveredLinkURL.isEmpty()) { + g_signal_emit_by_name(m_webView, "hovering-over-link", 0, 0); + m_hoveredLinkURL = KURL(); + } + + if (Node* node = hit.innerNonSharedNode()) { + Frame* frame = node->document()->frame(); + FrameView* view = frame ? frame->view() : 0; + m_webView->priv->tooltipArea = view ? view->contentsToWindow(node->getRect()) : IntRect(); + } else + m_webView->priv->tooltipArea = IntRect(); +} + +void ChromeClient::setToolTip(const String& toolTip, TextDirection) +{ + webkit_web_view_set_tooltip_text(m_webView, toolTip.utf8().data()); +} + +void ChromeClient::print(Frame* frame) +{ + WebKitWebFrame* webFrame = kit(frame); + gboolean isHandled = false; + g_signal_emit_by_name(m_webView, "print-requested", webFrame, &isHandled); + + if (isHandled) + return; + + webkit_web_frame_print(webFrame); +} + +#if ENABLE(DATABASE) +void ChromeClient::exceededDatabaseQuota(Frame* frame, const String& databaseName) +{ + guint64 defaultQuota = webkit_get_default_web_database_quota(); + DatabaseTracker::tracker().setQuota(frame->document()->securityOrigin(), defaultQuota); + + WebKitWebFrame* webFrame = kit(frame); + WebKitWebView* webView = getViewFromFrame(webFrame); + + WebKitSecurityOrigin* origin = webkit_web_frame_get_security_origin(webFrame); + WebKitWebDatabase* webDatabase = webkit_security_origin_get_web_database(origin, databaseName.utf8().data()); + g_signal_emit_by_name(webView, "database-quota-exceeded", webFrame, webDatabase); +} +#endif + +#if ENABLE(OFFLINE_WEB_APPLICATIONS) +void ChromeClient::reachedMaxAppCacheSize(int64_t spaceNeeded) +{ + // FIXME: Free some space. + notImplemented(); +} + +void ChromeClient::reachedApplicationCacheOriginQuota(SecurityOrigin*) +{ + notImplemented(); +} +#endif + +void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser) +{ + RefPtr<FileChooser> chooser = prpFileChooser; + + GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"), + GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(platformPageClient()))), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), chooser->allowsMultipleFiles()); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { + if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(dialog))) { + GSList* filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog)); + Vector<String> names; + for (GSList* item = filenames ; item ; item = item->next) { + if (!item->data) + continue; + names.append(filenameToString(static_cast<char*>(item->data))); + g_free(item->data); + } + g_slist_free(filenames); + chooser->chooseFiles(names); + } else { + gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + if (filename) + chooser->chooseFile(filenameToString(filename)); + g_free(filename); + } + } + gtk_widget_destroy(dialog); +} + +void ChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser) +{ + chooser->iconLoaded(Icon::createIconForFiles(filenames)); +} + +void ChromeClient::dispatchViewportDataDidChange(const ViewportArguments& arguments) const +{ + // Recompute the viewport attributes making it valid. + webkitViewportAttributesRecompute(webkit_web_view_get_viewport_attributes(m_webView)); +} + +void ChromeClient::setCursor(const Cursor&) +{ + notImplemented(); +} + +void ChromeClient::requestGeolocationPermissionForFrame(Frame* frame, Geolocation* geolocation) +{ + WebKitWebFrame* webFrame = kit(frame); + WebKitWebView* webView = getViewFromFrame(webFrame); + + GRefPtr<WebKitGeolocationPolicyDecision> policyDecision(adoptGRef(webkit_geolocation_policy_decision_new(webFrame, geolocation))); + + gboolean isHandled = FALSE; + g_signal_emit_by_name(webView, "geolocation-policy-decision-requested", webFrame, policyDecision.get(), &isHandled); + if (!isHandled) + webkit_geolocation_policy_deny(policyDecision.get()); +} + +void ChromeClient::cancelGeolocationPermissionRequestForFrame(WebCore::Frame* frame, WebCore::Geolocation*) +{ + WebKitWebFrame* webFrame = kit(frame); + WebKitWebView* webView = getViewFromFrame(webFrame); + g_signal_emit_by_name(webView, "geolocation-policy-decision-cancelled", webFrame); +} + +bool ChromeClient::selectItemWritingDirectionIsNatural() +{ + return true; +} + +PassRefPtr<WebCore::PopupMenu> ChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const +{ + return adoptRef(new PopupMenuGtk(client)); +} + +PassRefPtr<WebCore::SearchPopupMenu> ChromeClient::createSearchPopupMenu(WebCore::PopupMenuClient* client) const +{ + return adoptRef(new SearchPopupMenuGtk(client)); +} + +#if ENABLE(VIDEO) + +bool ChromeClient::supportsFullscreenForNode(const Node* node) +{ + return node->hasTagName(HTMLNames::videoTag); +} + +void ChromeClient::enterFullscreenForNode(Node* node) +{ + WebCore::Frame* frame = node->document()->frame(); + WebKitWebFrame* webFrame = kit(frame); + WebKitWebView* webView = getViewFromFrame(webFrame); + webViewEnterFullscreen(webView, node); +} + +void ChromeClient::exitFullscreenForNode(Node* node) +{ + WebCore::Frame* frame = node->document()->frame(); + WebKitWebFrame* webFrame = kit(frame); + WebKitWebView* webView = getViewFromFrame(webFrame); + webViewExitFullscreen(webView); +} +#endif + +#if ENABLE(FULLSCREEN_API) +bool ChromeClient::supportsFullScreenForElement(const WebCore::Element* element) +{ + return true; +} + +void ChromeClient::enterFullScreenForElement(WebCore::Element* element) +{ + element->document()->webkitWillEnterFullScreenForElement(element); + element->document()->webkitDidEnterFullScreenForElement(element); +} + +void ChromeClient::exitFullScreenForElement(WebCore::Element* element) +{ + element->document()->webkitWillExitFullScreenForElement(element); + element->document()->webkitDidExitFullScreenForElement(element); +} +#endif + + +} diff --git a/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h new file mode 100644 index 0000000..d607c54 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef ChromeClientGtk_h +#define ChromeClientGtk_h + +#include "ChromeClient.h" +#include "KURL.h" +#include "PopupMenu.h" +#include "SearchPopupMenu.h" + +typedef struct _WebKitWebView WebKitWebView; + +namespace WebCore { +class PopupMenuClient; +} + +namespace WebKit { + + class ChromeClient : public WebCore::ChromeClient { + public: + ChromeClient(WebKitWebView*); + WebKitWebView* webView() const { return m_webView; } + + virtual void chromeDestroyed(); + + virtual void setWindowRect(const WebCore::FloatRect&); + virtual WebCore::FloatRect windowRect(); + + virtual WebCore::FloatRect pageRect(); + + virtual float scaleFactor(); + + virtual void focus(); + virtual void unfocus(); + + virtual bool canTakeFocus(WebCore::FocusDirection); + virtual void takeFocus(WebCore::FocusDirection); + + virtual void focusedNodeChanged(WebCore::Node*); + virtual void focusedFrameChanged(WebCore::Frame*); + + virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&); + virtual void show(); + + virtual bool canRunModal(); + virtual void runModal(); + + virtual void setToolbarsVisible(bool); + virtual bool toolbarsVisible(); + + virtual void setStatusbarVisible(bool); + virtual bool statusbarVisible(); + + virtual void setScrollbarsVisible(bool); + virtual bool scrollbarsVisible(); + + virtual void setMenubarVisible(bool); + virtual bool menubarVisible(); + + virtual void setResizable(bool); + + virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, + WebCore::MessageLevel level, const WTF::String& message, + unsigned int lineNumber, const WTF::String& sourceID); + + virtual bool canRunBeforeUnloadConfirmPanel(); + virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame); + + virtual void closeWindowSoon(); + + virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&); + virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&); + virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result); + virtual void setStatusbarText(const WTF::String&); + virtual bool shouldInterruptJavaScript(); + virtual bool tabsToLinks() const; + + virtual WebCore::IntRect windowResizerRect() const; + + virtual void invalidateWindow(const WebCore::IntRect&, bool); + virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool); + virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool); + virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, const WebCore::IntRect& clipRect); + + virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const; + virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const; + virtual PlatformPageClient platformPageClient() const; + virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const; + + virtual void scrollbarsModeDidChange() const; + virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags); + + virtual void setToolTip(const WTF::String&, WebCore::TextDirection); + + virtual void dispatchViewportDataDidChange(const WebCore::ViewportArguments& arguments) const; + + virtual void print(WebCore::Frame*); +#if ENABLE(DATABASE) + virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&); +#endif +#if ENABLE(OFFLINE_WEB_APPLICATIONS) + virtual void reachedMaxAppCacheSize(int64_t spaceNeeded); + virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*); +#endif +#if ENABLE(CONTEXT_MENUS) + virtual void showContextMenu() { } +#endif + virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>); + virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*); + + virtual void formStateDidChange(const WebCore::Node*) { } + + virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; } + + virtual void setCursor(const WebCore::Cursor&); + + virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const {} + virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*); + virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*); + + virtual bool selectItemWritingDirectionIsNatural(); + virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const; + virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const; +#if ENABLE(VIDEO) + virtual bool supportsFullscreenForNode(const WebCore::Node*); + virtual void enterFullscreenForNode(WebCore::Node*); + virtual void exitFullscreenForNode(WebCore::Node*); +#endif + +#if ENABLE(FULLSCREEN_API) + virtual bool supportsFullScreenForElement(const WebCore::Element*); + virtual void enterFullScreenForElement(WebCore::Element*); + virtual void exitFullScreenForElement(WebCore::Element*); +#endif + + private: + WebKitWebView* m_webView; + WebCore::KURL m_hoveredLinkURL; + unsigned int m_closeSoonTimer; + }; +} + +#endif // ChromeClient_h diff --git a/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp new file mode 100644 index 0000000..d9c59d0 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp @@ -0,0 +1,207 @@ +/* + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "ContextMenuClientGtk.h" + +#include "ContextMenu.h" +#include "ContextMenuController.h" +#include "HitTestResult.h" +#include "KURL.h" +#include "NotImplemented.h" +#include "Page.h" +#include "webkitwebviewprivate.h" +#include <glib-object.h> +#include <glib/gi18n-lib.h> +#include <gtk/gtk.h> +#include <wtf/text/CString.h> + +using namespace WebCore; + +namespace WebKit { + +ContextMenuClient::ContextMenuClient(WebKitWebView *webView) + : m_webView(webView) +{ +} + +void ContextMenuClient::contextMenuDestroyed() +{ + delete this; +} + +static GtkWidget* inputMethodsMenuItem (WebKitWebView* webView) +{ + if (gtk_major_version > 2 || (gtk_major_version == 2 && gtk_minor_version >= 10)) { + GtkSettings* settings = webView ? gtk_widget_get_settings(GTK_WIDGET(webView)) : gtk_settings_get_default(); + + gboolean showMenu = TRUE; + if (settings) + g_object_get(settings, "gtk-show-input-method-menu", &showMenu, NULL); + if (!showMenu) + return 0; + } + + GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic( + _("Input _Methods")); + + WebKitWebViewPrivate* priv = webView->priv; + GtkWidget* imContextMenu = gtk_menu_new(); + gtk_im_multicontext_append_menuitems(GTK_IM_MULTICONTEXT(priv->imContext.get()), GTK_MENU_SHELL(imContextMenu)); + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), imContextMenu); + + return menuitem; +} + +// Values taken from gtktextutil.c +typedef struct { + const char *label; + gunichar ch; +} GtkUnicodeMenuEntry; +static const GtkUnicodeMenuEntry bidi_menu_entries[] = { + { N_("LRM _Left-to-right mark"), 0x200E }, + { N_("RLM _Right-to-left mark"), 0x200F }, + { N_("LRE Left-to-right _embedding"), 0x202A }, + { N_("RLE Right-to-left e_mbedding"), 0x202B }, + { N_("LRO Left-to-right _override"), 0x202D }, + { N_("RLO Right-to-left o_verride"), 0x202E }, + { N_("PDF _Pop directional formatting"), 0x202C }, + { N_("ZWS _Zero width space"), 0x200B }, + { N_("ZWJ Zero width _joiner"), 0x200D }, + { N_("ZWNJ Zero width _non-joiner"), 0x200C } +}; + +static void insertControlCharacter(GtkWidget* widget) +{ + // GtkUnicodeMenuEntry* entry = (GtkUnicodeMenuEntry*)g_object_get_data(G_OBJECT(widget), "gtk-unicode-menu-entry"); + notImplemented(); +} + +static GtkWidget* unicodeMenuItem(WebKitWebView* webView) +{ + if (gtk_major_version > 2 || (gtk_major_version == 2 && gtk_minor_version >= 10)) { + GtkSettings* settings = webView ? gtk_widget_get_settings(GTK_WIDGET(webView)) : gtk_settings_get_default(); + + gboolean showMenu = TRUE; + if (settings) + g_object_get(settings, "gtk-show-unicode-menu", &showMenu, NULL); + if (!showMenu) + return 0; + } + + GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic( + _("_Insert Unicode Control Character")); + + GtkWidget* unicodeContextMenu = gtk_menu_new(); + unsigned i; + for (i = 0; i < G_N_ELEMENTS(bidi_menu_entries); i++) { + GtkWidget* menuitem = gtk_menu_item_new_with_mnemonic(_(bidi_menu_entries[i].label)); + g_object_set_data(G_OBJECT(menuitem), "gtk-unicode-menu-entry", (gpointer)&bidi_menu_entries[i]); + g_signal_connect(menuitem, "activate", G_CALLBACK(insertControlCharacter), 0); + gtk_widget_show(menuitem); + gtk_menu_shell_append(GTK_MENU_SHELL(unicodeContextMenu), menuitem); + // FIXME: Make the item sensitive as insertControlCharacter() is implemented + gtk_widget_set_sensitive(menuitem, FALSE); + } + + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), unicodeContextMenu); + + return menuitem; +} + +PlatformMenuDescription ContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu* menu) +{ + GtkMenu* gtkmenu = menu->releasePlatformDescription(); + + WebKitWebView* webView = m_webView; + HitTestResult result = core(webView)->contextMenuController()->hitTestResult(); + + if (result.isContentEditable()) { + + GtkWidget* imContextMenu = inputMethodsMenuItem(webView); + GtkWidget* unicodeContextMenu = unicodeMenuItem(webView); + + if (imContextMenu || unicodeContextMenu) { + GtkWidget* separator = gtk_separator_menu_item_new(); + gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), separator); + gtk_widget_show(separator); + } + + if (imContextMenu) { + gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), imContextMenu); + gtk_widget_show(imContextMenu); + } + + if (unicodeContextMenu) { + gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), unicodeContextMenu); + gtk_widget_show(unicodeContextMenu); + } + + } + + return gtkmenu; +} + +void ContextMenuClient::contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) +{ + notImplemented(); +} + +void ContextMenuClient::downloadURL(const KURL& url) +{ + WebKitNetworkRequest* networkRequest = webkit_network_request_new(url.string().utf8().data()); + + webkit_web_view_request_download(m_webView, networkRequest); + g_object_unref(networkRequest); +} + +void ContextMenuClient::copyImageToClipboard(const HitTestResult&) +{ + notImplemented(); +} + +void ContextMenuClient::searchWithGoogle(const Frame*) +{ + notImplemented(); +} + +void ContextMenuClient::lookUpInDictionary(Frame*) +{ + notImplemented(); +} + +void ContextMenuClient::speak(const String&) +{ + notImplemented(); +} + +void ContextMenuClient::stopSpeaking() +{ + notImplemented(); +} + +bool ContextMenuClient::isSpeaking() +{ + notImplemented(); + return false; +} + +} + diff --git a/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h new file mode 100644 index 0000000..07a022c --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2006 Zack Rusin <zack@kde.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ContextMenuClientGtk_h +#define ContextMenuClientGtk_h + +#include "ContextMenuClient.h" + +typedef struct _WebKitWebView WebKitWebView; + +namespace WebCore { + class ContextMenu; +} + +namespace WebKit { + + class ContextMenuClient : public WebCore::ContextMenuClient + { + public: + ContextMenuClient(WebKitWebView*); + + virtual void contextMenuDestroyed(); + + virtual WebCore::PlatformMenuDescription getCustomMenuFromDefaultItems(WebCore::ContextMenu*); + virtual void contextMenuItemSelected(WebCore::ContextMenuItem*, const WebCore::ContextMenu*); + + virtual void downloadURL(const WebCore::KURL& url); + virtual void copyImageToClipboard(const WebCore::HitTestResult&); + virtual void searchWithGoogle(const WebCore::Frame*); + virtual void lookUpInDictionary(WebCore::Frame*); + virtual void speak(const WTF::String&); + virtual void stopSpeaking(); + virtual bool isSpeaking(); + + private: + WebKitWebView* m_webView; + }; +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp new file mode 100644 index 0000000..6031b62 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2009 Jan Michael Alonzo + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "DocumentLoaderGtk.h" + +#include "GRefPtr.h" +#include "webkitwebdatasource.h" +#include "webkitwebdatasourceprivate.h" + +using namespace WebCore; + +namespace WebKit { + +DocumentLoader::DocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) + : WebCore::DocumentLoader(request, substituteData) + , m_isDataSourceReffed(false) + , m_dataSource(0) +{ +} + +void DocumentLoader::setDataSource(WebKitWebDataSource* dataSource) +{ + ASSERT(!m_dataSource); + + m_dataSource = dataSource; + refDataSource(); +} + +void DocumentLoader::detachDataSource() +{ + unrefDataSource(); +} + +void DocumentLoader::attachToFrame() +{ + WebCore::DocumentLoader::attachToFrame(); + + if (m_dataSource) { + refDataSource(); + return; + } + + // We may get to here without having a datasource, when the data + // is coming from the page cache. + GRefPtr<WebKitWebDataSource> dataSource(adoptGRef(kitNew(this))); + setDataSource(dataSource.get()); +} + +void DocumentLoader::detachFromFrame() +{ + WebCore::DocumentLoader::detachFromFrame(); + + if (m_loadingResources.isEmpty()) + unrefDataSource(); +} + +void DocumentLoader::increaseLoadCount(unsigned long identifier) +{ + ASSERT(m_dataSource); + + if (m_loadingResources.contains(identifier)) + return; + m_loadingResources.add(identifier); + refDataSource(); +} + +void DocumentLoader::decreaseLoadCount(unsigned long identifier) +{ + HashSet<unsigned long>::iterator it = m_loadingResources.find(identifier); + + // It is valid for a load to be cancelled before it's started. + if (it == m_loadingResources.end()) + return; + + m_loadingResources.remove(it); + + if (m_loadingResources.isEmpty() && !frame()) + unrefDataSource(); +} + +// helper methos to avoid ref count churn +void DocumentLoader::refDataSource() +{ + if (!m_dataSource || m_isDataSourceReffed) + return; + m_isDataSourceReffed = true; + g_object_ref(m_dataSource); +} +void DocumentLoader::unrefDataSource() +{ + if (!m_isDataSourceReffed) + return; + ASSERT(m_dataSource); + m_isDataSourceReffed = false; + g_object_unref(m_dataSource); + m_dataSource = 0; +} + +} // end namespace WebKit diff --git a/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h new file mode 100644 index 0000000..c601bc5 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2009 Jan Michael Alonzo + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef DocumentLoaderGtk_h +#define DocumentLoaderGtk_h + +#include "DocumentLoader.h" +#include "webkitdefines.h" +#include "wtf/HashSet.h" + +namespace WebCore { + class ResourceRequest; + class SubstituteData; +} + +namespace WebKit { + +class DocumentLoader : public WebCore::DocumentLoader { +public: + static PassRefPtr<WebKit::DocumentLoader> create(const WebCore::ResourceRequest& request, const WebCore::SubstituteData& data) + { + return adoptRef(new DocumentLoader(request, data)); + } + + void setDataSource(WebKitWebDataSource*); + void detachDataSource(); + WebKitWebDataSource* dataSource() const { return m_dataSource; } + + void increaseLoadCount(unsigned long identifier); + void decreaseLoadCount(unsigned long identifier); + +private: + DocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); + + virtual void attachToFrame(); + virtual void detachFromFrame(); + + void refDataSource(); + void unrefDataSource(); + + bool m_isDataSourceReffed; + WebKitWebDataSource* m_dataSource; + HashSet<unsigned long> m_loadingResources; +}; + +} // end namespace WebKit + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp new file mode 100644 index 0000000..836ec28 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2009, 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "DragClientGtk.h" + +#include "ClipboardGtk.h" +#include "ClipboardUtilitiesGtk.h" +#include "DataObjectGtk.h" +#include "Document.h" +#include "DragController.h" +#include "Element.h" +#include "Frame.h" +#include "GOwnPtrGtk.h" +#include "GRefPtrGtk.h" +#include "GtkVersioning.h" +#include "NotImplemented.h" +#include "PasteboardHelper.h" +#include "RenderObject.h" +#include "webkitwebframeprivate.h" +#include "webkitwebviewprivate.h" +#include "webkitwebview.h" +#include <gdk/gdk.h> +#include <gtk/gtk.h> + +using namespace WebCore; + +namespace WebKit { + +#ifdef GTK_API_VERSION_2 +static gboolean dragIconWindowDrawEventCallback(GtkWidget* widget, GdkEventExpose* event, DragClient* client) +{ + RefPtr<cairo_t> context = adoptRef(gdk_cairo_create(event->window)); + client->drawDragIconWindow(widget, context.get()); + return TRUE; +} +#else +static gboolean dragIconWindowDrawEventCallback(GtkWidget* widget, cairo_t* context, DragClient* client) +{ + if (!gdk_cairo_get_clip_rectangle(context, 0)) + return FALSE; + client->drawDragIconWindow(widget, context); + return TRUE; +} +#endif // GTK_API_VERSION_2 + +DragClient::DragClient(WebKitWebView* webView) + : m_webView(webView) + , m_startPos(0, 0) + , m_dragIconWindow(gtk_window_new(GTK_WINDOW_POPUP)) +{ +#ifdef GTK_API_VERSION_2 + g_signal_connect(m_dragIconWindow, "expose-event", G_CALLBACK(dragIconWindowDrawEventCallback), this); +#else + g_signal_connect(m_dragIconWindow, "draw", G_CALLBACK(dragIconWindowDrawEventCallback), this); +#endif +} + +DragClient::~DragClient() +{ + gtk_widget_destroy(m_dragIconWindow); +} + +void DragClient::willPerformDragDestinationAction(DragDestinationAction, DragData*) +{ +} + +void DragClient::willPerformDragSourceAction(DragSourceAction, const IntPoint& startPos, Clipboard*) +{ + m_startPos = startPos; +} + +DragDestinationAction DragClient::actionMaskForDrag(DragData*) +{ + notImplemented(); + return DragDestinationActionAny; +} + +DragSourceAction DragClient::dragSourceActionMaskForPoint(const IntPoint&) +{ + notImplemented(); + return DragSourceActionAny; +} + +void DragClient::startDrag(DragImageRef image, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool linkDrag) +{ + ClipboardGtk* clipboardGtk = reinterpret_cast<ClipboardGtk*>(clipboard); + + WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame)); + RefPtr<DataObjectGtk> dataObject = clipboardGtk->dataObject(); + GRefPtr<GtkTargetList> targetList(clipboardGtk->helper()->targetListForDataObject(dataObject.get())); + GOwnPtr<GdkEvent> currentEvent(gtk_get_current_event()); + + GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView), targetList.get(), dragOperationToGdkDragActions(clipboard->sourceOperation()), 1, currentEvent.get()); + webView->priv->draggingDataObjects.set(context, dataObject); + + // A drag starting should prevent a double-click from happening. This might + // happen if a drag is followed very quickly by another click (like in the DRT). + webView->priv->previousClickTime = 0; + + // This strategy originally comes from Chromium: + // src/chrome/browser/gtk/tab_contents_drag_source.cc + if (image) { + m_dragImage = image; + IntSize imageSize(cairo_image_surface_get_width(image), cairo_image_surface_get_height(image)); + gtk_window_resize(GTK_WINDOW(m_dragIconWindow), imageSize.width(), imageSize.height()); + + if (!gtk_widget_get_realized(m_dragIconWindow)) { + GdkScreen* screen = gtk_widget_get_screen(m_dragIconWindow); +#ifdef GTK_API_VERSION_2 + GdkColormap* rgba = gdk_screen_get_rgba_colormap(screen); + if (rgba) + gtk_widget_set_colormap(m_dragIconWindow, rgba); +#else + GdkVisual* visual = gdk_screen_get_rgba_visual(screen); + if (!visual) + visual = gdk_screen_get_system_visual(screen); + gtk_widget_set_visual(m_dragIconWindow, visual); +#endif // GTK_API_VERSION_2 + } + + IntSize origin = eventPos - dragImageOrigin; + gtk_drag_set_icon_widget(context, m_dragIconWindow, + origin.width(), origin.height()); + } else + gtk_drag_set_icon_default(context); +} + +void DragClient::drawDragIconWindow(GtkWidget* widget, cairo_t* context) +{ + cairo_rectangle(context, 0, 0, + cairo_image_surface_get_width(m_dragImage.get()), + cairo_image_surface_get_height(m_dragImage.get())); + cairo_set_operator(context, CAIRO_OPERATOR_SOURCE); + cairo_set_source_surface(context, m_dragImage.get(), 0, 0); + cairo_fill(context); +} + +DragImageRef DragClient::createDragImageForLink(KURL&, const String&, Frame*) +{ + notImplemented(); + return 0; +} + +void DragClient::dragControllerDestroyed() +{ + delete this; +} +} diff --git a/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h new file mode 100644 index 0000000..3a16ae5 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2007 Apple Inc. All rights reserved. + * Copyright (C) 2007 Holger Hans Peter Freyther + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef DragClientGtk_h +#define DragClientGtk_h + +#include "DragClient.h" +#include "GRefPtr.h" +#include "RefPtrCairo.h" + +typedef struct _WebKitWebView WebKitWebView; + +namespace WebKit { + + class DragClient : public WebCore::DragClient { + public: + DragClient(WebKitWebView*); + ~DragClient(); + + virtual void willPerformDragDestinationAction(WebCore::DragDestinationAction, WebCore::DragData*); + virtual void willPerformDragSourceAction(WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::Clipboard*); + virtual WebCore::DragDestinationAction actionMaskForDrag(WebCore::DragData*); + + virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint); + + virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false); + virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*); + + virtual void dragControllerDestroyed(); + + void drawDragIconWindow(GtkWidget*, cairo_t*); + + private: + WebKitWebView* m_webView; + WebCore::IntPoint m_startPos; + GtkWidget* m_dragIconWindow; + RefPtr<cairo_surface_t> m_dragImage; + }; +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp new file mode 100644 index 0000000..6f31887 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp @@ -0,0 +1,534 @@ +/* + * Copyright (C) Research In Motion Limited 2010. All rights reserved. + * Copyright (C) 2010 Joone Hur <joone@kldp.org> + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "DumpRenderTreeSupportGtk.h" + +#include "APICast.h" +#include "AXObjectCache.h" +#include "AccessibilityObjectWrapperAtk.h" +#include "AnimationController.h" +#include "DOMWrapperWorld.h" +#include "Document.h" +#include "FocusController.h" +#include "FrameLoaderClientGtk.h" +#include "FrameTree.h" +#include "FrameView.h" +#include "GCController.h" +#include "GraphicsContext.h" +#include "JSDOMWindow.h" +#include "JSDocument.h" +#include "JSElement.h" +#include "JSLock.h" +#include "JSNodeList.h" +#include "JSValue.h" +#include "NodeList.h" +#include "PageGroup.h" +#include "PlatformString.h" +#include "PrintContext.h" +#include "RenderListItem.h" +#include "RenderTreeAsText.h" +#include "RenderView.h" +#include "SecurityOrigin.h" +#include "WorkerThread.h" +#include "webkitwebframe.h" +#include "webkitwebframeprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <JavaScriptCore/APICast.h> + +#if ENABLE(SVG) +#include "SVGDocumentExtensions.h" +#include "SVGSMILElement.h" +#endif + +using namespace JSC; +using namespace WebCore; +using namespace WebKit; + +bool DumpRenderTreeSupportGtk::s_drtRun = false; +bool DumpRenderTreeSupportGtk::s_linksIncludedInTabChain = true; + +DumpRenderTreeSupportGtk::DumpRenderTreeSupportGtk() +{ +} + +DumpRenderTreeSupportGtk::~DumpRenderTreeSupportGtk() +{ +} + +void DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(bool enabled) +{ + s_drtRun = enabled; +} + +bool DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled() +{ + return s_drtRun; +} +void DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(bool enabled) +{ + s_linksIncludedInTabChain = enabled; +} + +bool DumpRenderTreeSupportGtk::linksIncludedInFocusChain() +{ + return s_linksIncludedInTabChain; +} + +JSValueRef DumpRenderTreeSupportGtk::nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping) +{ + JSLock lock(SilenceAssertionsOnly); + ExecState* exec = toJS(context); + if (!value) + return JSValueMakeUndefined(context); + JSValue jsValue = toJS(exec, value); + if (!jsValue.inherits(&JSDocument::s_info)) + return JSValueMakeUndefined(context); + + JSDocument* jsDocument = static_cast<JSDocument*>(asObject(jsValue)); + Document* document = jsDocument->impl(); + RefPtr<NodeList> nodes = document->nodesFromRect(x, y, top, right, bottom, left, ignoreClipping); + return toRef(exec, toJS(exec, jsDocument->globalObject(), nodes.get())); +} + +/** + * getFrameChildren: + * @frame: a #WebKitWebFrame + * + * Return value: child frames of @frame + */ +GSList* DumpRenderTreeSupportGtk::getFrameChildren(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + GSList* children = 0; + for (Frame* child = coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { + FrameLoader* loader = child->loader(); + WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(loader->client()); + if (client) + children = g_slist_append(children, client->webFrame()); + } + + return children; +} + +/** + * getInnerText: + * @frame: a #WebKitWebFrame + * + * Return value: inner text of @frame + */ +CString DumpRenderTreeSupportGtk::getInnerText(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString("")); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return CString(""); + + FrameView* view = coreFrame->view(); + + if (view && view->layoutPending()) + view->layout(); + + Element* documentElement = coreFrame->document()->documentElement(); + return documentElement->innerText().utf8(); +} + +/** + * dumpRenderTree: + * @frame: a #WebKitWebFrame + * + * Return value: Non-recursive render tree dump of @frame + */ +CString DumpRenderTreeSupportGtk::dumpRenderTree(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString("")); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return CString(""); + + FrameView* view = coreFrame->view(); + + if (view && view->layoutPending()) + view->layout(); + + return externalRepresentation(coreFrame).utf8(); +} + +/** + * counterValueForElementById: + * @frame: a #WebKitWebFrame + * @id: an element ID string + * + * Return value: The counter value of element @id in @frame + */ +CString DumpRenderTreeSupportGtk::counterValueForElementById(WebKitWebFrame* frame, const char* id) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString()); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return CString(); + + Element* coreElement = coreFrame->document()->getElementById(AtomicString(id)); + if (!coreElement) + return CString(); + + return counterValueForElement(coreElement).utf8(); +} + +/** + * numberForElementById + * @frame: a #WebKitWebFrame + * @id: an element ID string + * @pageWidth: width of a page + * @pageHeight: height of a page + * + * Return value: The number of page where the specified element will be put + */ +int DumpRenderTreeSupportGtk::pageNumberForElementById(WebKitWebFrame* frame, const char* id, float pageWidth, float pageHeight) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return -1; + + Element* coreElement = coreFrame->document()->getElementById(AtomicString(id)); + if (!coreElement) + return -1; + return PrintContext::pageNumberForElement(coreElement, FloatSize(pageWidth, pageHeight)); +} + +/** + * numberOfPagesForFrame + * @frame: a #WebKitWebFrame + * @pageWidth: width of a page + * @pageHeight: height of a page + * + * Return value: The number of pages to be printed. + */ +int DumpRenderTreeSupportGtk::numberOfPagesForFrame(WebKitWebFrame* frame, float pageWidth, float pageHeight) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return -1; + + return PrintContext::numberOfPages(coreFrame, FloatSize(pageWidth, pageHeight)); +} + +/** + * pageProperty + * @frame: a #WebKitWebFrame + * @propertyName: name of a property + * @pageNumber: number of a page + * + * Return value: The value of the given property name. + */ +CString DumpRenderTreeSupportGtk::pageProperty(WebKitWebFrame* frame, const char* propertyName, int pageNumber) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString()); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return CString(); + + return PrintContext::pageProperty(coreFrame, propertyName, pageNumber).utf8(); +} + +/** + * isPageBoxVisible + * @frame: a #WebKitWebFrame + * @pageNumber: number of a page + * + * Return value: TRUE if a page box is visible. + */ +bool DumpRenderTreeSupportGtk::isPageBoxVisible(WebKitWebFrame* frame, int pageNumber) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), false); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return false; + + return coreFrame->document()->isPageBoxVisible(pageNumber); +} + +/** + * pageSizeAndMarginsInPixels + * @frame: a #WebKitWebFrame + * @pageNumber: number of a page + * @width: width of a page + * @height: height of a page + * @marginTop: top margin of a page + * @marginRight: right margin of a page + * @marginBottom: bottom margin of a page + * @marginLeft: left margin of a page + * + * Return value: The value of page size and margin. + */ +CString DumpRenderTreeSupportGtk::pageSizeAndMarginsInPixels(WebKitWebFrame* frame, int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString()); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return CString(); + + return PrintContext::pageSizeAndMarginsInPixels(coreFrame, pageNumber, width, height, marginTop, marginRight, marginBottom, marginLeft).utf8(); +} + +/** + * addUserStyleSheet + * @frame: a #WebKitWebFrame + * @sourceCode: code of a user stylesheet + * + */ +void DumpRenderTreeSupportGtk::addUserStyleSheet(WebKitWebFrame* frame, const char* sourceCode, bool allFrames) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + WebKitWebView* webView = getViewFromFrame(frame); + Page* page = core(webView); + page->group().addUserStyleSheetToWorld(mainThreadNormalWorld(), sourceCode, KURL(), 0, 0, allFrames ? InjectInAllFrames : InjectInTopFrameOnly); +} + +/** + * getPendingUnloadEventCount: + * @frame: a #WebKitWebFrame + * + * Return value: number of pending unload events + */ +guint DumpRenderTreeSupportGtk::getPendingUnloadEventCount(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + return core(frame)->domWindow()->pendingUnloadEventListeners(); +} + +bool DumpRenderTreeSupportGtk::pauseAnimation(WebKitWebFrame* frame, const char* name, double time, const char* element) +{ + ASSERT(core(frame)); + Element* coreElement = core(frame)->document()->getElementById(AtomicString(element)); + if (!coreElement || !coreElement->renderer()) + return false; + return core(frame)->animation()->pauseAnimationAtTime(coreElement->renderer(), AtomicString(name), time); +} + +bool DumpRenderTreeSupportGtk::pauseTransition(WebKitWebFrame* frame, const char* name, double time, const char* element) +{ + ASSERT(core(frame)); + Element* coreElement = core(frame)->document()->getElementById(AtomicString(element)); + if (!coreElement || !coreElement->renderer()) + return false; + return core(frame)->animation()->pauseTransitionAtTime(coreElement->renderer(), AtomicString(name), time); +} + +bool DumpRenderTreeSupportGtk::pauseSVGAnimation(WebKitWebFrame* frame, const char* animationId, double time, const char* elementId) +{ + ASSERT(core(frame)); +#if ENABLE(SVG) + Document* document = core(frame)->document(); + if (!document || !document->svgExtensions()) + return false; + Element* coreElement = document->getElementById(AtomicString(animationId)); + if (!coreElement || !SVGSMILElement::isSMILElement(coreElement)) + return false; + return document->accessSVGExtensions()->sampleAnimationAtTime(elementId, static_cast<SVGSMILElement*>(coreElement), time); +#else + return false; +#endif +} + +CString DumpRenderTreeSupportGtk::markerTextForListItem(WebKitWebFrame* frame, JSContextRef context, JSValueRef nodeObject) +{ + JSC::ExecState* exec = toJS(context); + Element* element = toElement(toJS(exec, nodeObject)); + if (!element) + return CString(); + + return WebCore::markerTextForListItem(element).utf8(); +} + +unsigned int DumpRenderTreeSupportGtk::numberOfActiveAnimations(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + return coreFrame->animation()->numberOfActiveAnimations(); +} + +void DumpRenderTreeSupportGtk::suspendAnimations(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + return coreFrame->animation()->suspendAnimations(); +} + +void DumpRenderTreeSupportGtk::resumeAnimations(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + return coreFrame->animation()->resumeAnimations(); +} + +void DumpRenderTreeSupportGtk::clearMainFrameName(WebKitWebFrame* frame) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + + core(frame)->tree()->clearName(); +} + +AtkObject* DumpRenderTreeSupportGtk::getRootAccessibleElement(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + +#if HAVE(ACCESSIBILITY) + if (!AXObjectCache::accessibilityEnabled()) + AXObjectCache::enableAccessibility(); + + WebKitWebFramePrivate* priv = frame->priv; + if (!priv->coreFrame || !priv->coreFrame->document()) + return 0; + + AtkObject* wrapper = priv->coreFrame->document()->axObjectCache()->rootObject()->wrapper(); + if (!wrapper) + return 0; + + return wrapper; +#else + return 0; +#endif +} + +AtkObject* DumpRenderTreeSupportGtk::getFocusedAccessibleElement(WebKitWebFrame* frame) +{ +#if HAVE(ACCESSIBILITY) + AtkObject* wrapper = getRootAccessibleElement(frame); + if (!wrapper) + return 0; + + return webkit_accessible_get_focused_element(WEBKIT_ACCESSIBLE(wrapper)); +#else + return 0; +#endif +} + +void DumpRenderTreeSupportGtk::executeCoreCommandByName(WebKitWebView* webView, const gchar* name, const gchar* value) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(name); + g_return_if_fail(value); + + core(webView)->focusController()->focusedOrMainFrame()->editor()->command(name).execute(value); +} + +bool DumpRenderTreeSupportGtk::isCommandEnabled(WebKitWebView* webView, const gchar* name) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + g_return_val_if_fail(name, FALSE); + + return core(webView)->focusController()->focusedOrMainFrame()->editor()->command(name).isEnabled(); +} + +void DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains) +{ + SecurityOrigin::addOriginAccessWhitelistEntry(*SecurityOrigin::createFromString(sourceOrigin), destinationProtocol, destinationHost, allowDestinationSubdomains); +} + +void DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists() +{ + SecurityOrigin::resetOriginAccessWhitelists(); +} + +void DumpRenderTreeSupportGtk::gcCollectJavascriptObjects() +{ + gcController().garbageCollectNow(); +} + +void DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone) +{ + gcController().garbageCollectOnAlternateThreadForDebugging(waitUntilDone); +} + +unsigned long DumpRenderTreeSupportGtk::gcCountJavascriptObjects() +{ + JSC::JSLock lock(JSC::SilenceAssertionsOnly); + return JSDOMWindow::commonJSGlobalData()->heap.objectCount(); +} + +void DumpRenderTreeSupportGtk::layoutFrame(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + FrameView* view = coreFrame->view(); + if (!view) + return; + + view->layout(); +} + +// For testing fast/viewport. +void DumpRenderTreeSupportGtk::dumpConfigurationForViewport(WebKitWebView* webView, gint availableWidth, gint availableHeight) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + ViewportArguments arguments = webView->priv->corePage->mainFrame()->document()->viewportArguments(); + // desktopWidth = 980, deviceWidth = 320, deviceHeight = 480, deviceDPI = 160 + ViewportAttributes attrs = computeViewportAttributes(arguments, 980, 320, 480, 160, IntSize(availableWidth, availableHeight)); + + fprintf(stdout, "viewport size %dx%d scale %f with limits [%f, %f]\n", attrs.layoutSize.width(), attrs.layoutSize.height(), attrs.initialScale, attrs.minimumScale, attrs.maximumScale); +} + +unsigned int DumpRenderTreeSupportGtk::workerThreadCount() +{ +#if ENABLE(WORKERS) + return WebCore::WorkerThread::workerThreadCount(); +#else + return 0; +#endif +} + +bool DumpRenderTreeSupportGtk::webkitWebFrameSelectionHasSpellingMarker(WebKitWebFrame *frame, gint from, gint length) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), FALSE); + + return core(frame)->editor()->selectionStartHasSpellingMarkerFor(from, length); +} diff --git a/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h new file mode 100644 index 0000000..663f13a --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h @@ -0,0 +1,89 @@ +/* + * Copyright (C) Research In Motion Limited 2010. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef DumpRenderTreeSupportGtk_h +#define DumpRenderTreeSupportGtk_h + + +#include "JSStringRef.h" +#include <webkit/webkitdefines.h> + +#include <atk/atk.h> +#include <glib.h> +#include <webkit/webkitdefines.h> +#include <webkit/webkitwebframe.h> +#include <wtf/text/CString.h> + +class DumpRenderTreeSupportGtk { + +public: + DumpRenderTreeSupportGtk(); + ~DumpRenderTreeSupportGtk(); + + static void setDumpRenderTreeModeEnabled(bool); + static bool dumpRenderTreeModeEnabled(); + + static void setLinksIncludedInFocusChain(bool); + static bool linksIncludedInFocusChain(); + static JSValueRef nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping); + static void dumpConfigurationForViewport(WebKitWebView* webView, gint availableWidth, gint availableHeight); + + // FIXME: Move these to webkitwebframe.h once their API has been discussed. + static GSList* getFrameChildren(WebKitWebFrame*); + static WTF::CString getInnerText(WebKitWebFrame*); + static WTF::CString dumpRenderTree(WebKitWebFrame*); + static WTF::CString counterValueForElementById(WebKitWebFrame*, const char* id); + static int pageNumberForElementById(WebKitWebFrame*, const char* id, float pageWidth, float pageHeight); + static int numberOfPagesForFrame(WebKitWebFrame*, float pageWidth, float pageHeight); + static WTF::CString pageProperty(WebKitWebFrame*, const char* propertyName, int pageNumber); + static bool isPageBoxVisible(WebKitWebFrame*, int pageNumber); + static WTF::CString pageSizeAndMarginsInPixels(WebKitWebFrame*, int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft); + static void addUserStyleSheet(WebKitWebFrame*, const char* sourceCode, bool allFrames); + static guint getPendingUnloadEventCount(WebKitWebFrame*); + static bool pauseAnimation(WebKitWebFrame*, const char* name, double time, const char* element); + static bool pauseTransition(WebKitWebFrame*, const char* name, double time, const char* element); + static bool pauseSVGAnimation(WebKitWebFrame*, const char* animationId, double time, const char* elementId); + static WTF::CString markerTextForListItem(WebKitWebFrame*, JSContextRef, JSValueRef nodeObject); + static unsigned int numberOfActiveAnimations(WebKitWebFrame*); + static void suspendAnimations(WebKitWebFrame*); + static void resumeAnimations(WebKitWebFrame*); + static void clearMainFrameName(WebKitWebFrame*); + static AtkObject* getFocusedAccessibleElement(WebKitWebFrame*); + static AtkObject* getRootAccessibleElement(WebKitWebFrame*); + static void layoutFrame(WebKitWebFrame*); + + // WebKitWebView + static void executeCoreCommandByName(WebKitWebView*, const gchar* name, const gchar* value); + static bool isCommandEnabled(WebKitWebView*, const gchar* name); + + // GC + static void gcCollectJavascriptObjects(); + static void gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone); + static unsigned long gcCountJavascriptObjects(); + + static void whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains); + static void resetOriginAccessWhiteLists(); + static unsigned int workerThreadCount(); + static bool webkitWebFrameSelectionHasSpellingMarker(WebKitWebFrame*, gint from, gint length); + +private: + static bool s_drtRun; + static bool s_linksIncludedInTabChain; +}; + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp new file mode 100644 index 0000000..ee9bf9a --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp @@ -0,0 +1,1025 @@ +/* + * Copyright (C) 2007 Alp Toker <alp@atoker.com> + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2009 Diego Escalante Urrelo <diegoe@gnome.org> + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2009, 2010 Igalia S.L. + * Copyright (C) 2010, Martin Robinson <mrobinson@webkit.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "EditorClientGtk.h" + +#include "DataObjectGtk.h" +#include "EditCommand.h" +#include "Editor.h" +#include <enchant.h> +#include "EventNames.h" +#include "FocusController.h" +#include "Frame.h" +#include <glib.h> +#include "KeyboardEvent.h" +#include "markup.h" +#include "NotImplemented.h" +#include "Page.h" +#include "PasteboardHelperGtk.h" +#include "PlatformKeyboardEvent.h" +#include "WebKitDOMBinding.h" +#include "WebKitDOMCSSStyleDeclarationPrivate.h" +#include "WebKitDOMHTMLElementPrivate.h" +#include "WebKitDOMNodePrivate.h" +#include "WebKitDOMRangePrivate.h" +#include "WindowsKeyboardCodes.h" +#include "webkitglobalsprivate.h" +#include "webkitmarshal.h" +#include "webkitwebsettingsprivate.h" +#include "webkitwebviewprivate.h" +#include <wtf/text/CString.h> + +// Arbitrary depth limit for the undo stack, to keep it from using +// unbounded memory. This is the maximum number of distinct undoable +// actions -- unbroken stretches of typed characters are coalesced +// into a single action. +#define maximumUndoStackDepth 1000 + +using namespace WebCore; + +namespace WebKit { + +static void imContextCommitted(GtkIMContext* context, const gchar* compositionString, EditorClient* client) +{ + Frame* frame = core(client->webView())->focusController()->focusedOrMainFrame(); + if (!frame || !frame->editor()->canEdit()) + return; + + // If this signal fires during a keydown event when we are not in the middle + // of a composition, then treat this 'commit' as a normal key event and just + // change the editable area right before the keypress event. + if (client->treatContextCommitAsKeyEvent()) { + client->updatePendingComposition(compositionString); + return; + } + + // If this signal fires during a mousepress event when we are in the middle + // of a composition, skip this 'commit' because the composition is already confirmed. + if (client->preventNextCompositionCommit()) + return; + + frame->editor()->confirmComposition(String::fromUTF8(compositionString)); + client->clearPendingComposition(); +} + +static void imContextPreeditChanged(GtkIMContext* context, EditorClient* client) +{ + Frame* frame = core(client->webView())->focusController()->focusedOrMainFrame(); + if (!frame || !frame->editor()->canEdit()) + return; + + // We ignore the provided PangoAttrList for now. + GOwnPtr<gchar> newPreedit(0); + gtk_im_context_get_preedit_string(context, &newPreedit.outPtr(), 0, 0); + + String preeditString = String::fromUTF8(newPreedit.get()); + Vector<CompositionUnderline> underlines; + underlines.append(CompositionUnderline(0, preeditString.length(), Color(0, 0, 0), false)); + frame->editor()->setComposition(preeditString, underlines, 0, 0); +} + +static void backspaceCallback(GtkWidget* widget, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "backspace"); + client->addPendingEditorCommand("DeleteBackward"); +} + +static void selectAllCallback(GtkWidget* widget, gboolean select, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "select-all"); + client->addPendingEditorCommand(select ? "SelectAll" : "Unselect"); +} + +static void cutClipboardCallback(GtkWidget* widget, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "cut-clipboard"); + client->addPendingEditorCommand("Cut"); +} + +static void copyClipboardCallback(GtkWidget* widget, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "copy-clipboard"); + client->addPendingEditorCommand("Copy"); +} + +static void pasteClipboardCallback(GtkWidget* widget, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "paste-clipboard"); + client->addPendingEditorCommand("Paste"); +} + +static void toggleOverwriteCallback(GtkWidget* widget, EditorClient*) +{ + // We don't support toggling the overwrite mode, but the default callback expects + // the GtkTextView to have a layout, so we handle this signal just to stop it. + g_signal_stop_emission_by_name(widget, "toggle-overwrite"); +} + +// GTK+ will still send these signals to the web view. So we can safely stop signal +// emission without breaking accessibility. +static void popupMenuCallback(GtkWidget* widget, EditorClient*) +{ + g_signal_stop_emission_by_name(widget, "popup-menu"); +} + +static void showHelpCallback(GtkWidget* widget, EditorClient*) +{ + g_signal_stop_emission_by_name(widget, "show-help"); +} + +static const char* const gtkDeleteCommands[][2] = { + { "DeleteBackward", "DeleteForward" }, // Characters + { "DeleteWordBackward", "DeleteWordForward" }, // Word ends + { "DeleteWordBackward", "DeleteWordForward" }, // Words + { "DeleteToBeginningOfLine", "DeleteToEndOfLine" }, // Lines + { "DeleteToBeginningOfLine", "DeleteToEndOfLine" }, // Line ends + { "DeleteToBeginningOfParagraph", "DeleteToEndOfParagraph" }, // Paragraph ends + { "DeleteToBeginningOfParagraph", "DeleteToEndOfParagraph" }, // Paragraphs + { 0, 0 } // Whitespace (M-\ in Emacs) +}; + +static void deleteFromCursorCallback(GtkWidget* widget, GtkDeleteType deleteType, gint count, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "delete-from-cursor"); + int direction = count > 0 ? 1 : 0; + + // Ensuring that deleteType <= G_N_ELEMENTS here results in a compiler warning + // that the condition is always true. + + if (deleteType == GTK_DELETE_WORDS) { + if (!direction) { + client->addPendingEditorCommand("MoveWordForward"); + client->addPendingEditorCommand("MoveWordBackward"); + } else { + client->addPendingEditorCommand("MoveWordBackward"); + client->addPendingEditorCommand("MoveWordForward"); + } + } else if (deleteType == GTK_DELETE_DISPLAY_LINES) { + if (!direction) + client->addPendingEditorCommand("MoveToBeginningOfLine"); + else + client->addPendingEditorCommand("MoveToEndOfLine"); + } else if (deleteType == GTK_DELETE_PARAGRAPHS) { + if (!direction) + client->addPendingEditorCommand("MoveToBeginningOfParagraph"); + else + client->addPendingEditorCommand("MoveToEndOfParagraph"); + } + + const char* rawCommand = gtkDeleteCommands[deleteType][direction]; + if (!rawCommand) + return; + + for (int i = 0; i < abs(count); i++) + client->addPendingEditorCommand(rawCommand); +} + +static const char* const gtkMoveCommands[][4] = { + { "MoveBackward", "MoveForward", + "MoveBackwardAndModifySelection", "MoveForwardAndModifySelection" }, // Forward/backward grapheme + { "MoveLeft", "MoveRight", + "MoveBackwardAndModifySelection", "MoveForwardAndModifySelection" }, // Left/right grapheme + { "MoveWordBackward", "MoveWordForward", + "MoveWordBackwardAndModifySelection", "MoveWordForwardAndModifySelection" }, // Forward/backward word + { "MoveUp", "MoveDown", + "MoveUpAndModifySelection", "MoveDownAndModifySelection" }, // Up/down line + { "MoveToBeginningOfLine", "MoveToEndOfLine", + "MoveToBeginningOfLineAndModifySelection", "MoveToEndOfLineAndModifySelection" }, // Up/down line ends + { "MoveParagraphForward", "MoveParagraphBackward", + "MoveParagraphForwardAndModifySelection", "MoveParagraphBackwardAndModifySelection" }, // Up/down paragraphs + { "MoveToBeginningOfParagraph", "MoveToEndOfParagraph", + "MoveToBeginningOfParagraphAndModifySelection", "MoveToEndOfParagraphAndModifySelection" }, // Up/down paragraph ends. + { "MovePageUp", "MovePageDown", + "MovePageUpAndModifySelection", "MovePageDownAndModifySelection" }, // Up/down page + { "MoveToBeginningOfDocument", "MoveToEndOfDocument", + "MoveToBeginningOfDocumentAndModifySelection", "MoveToEndOfDocumentAndModifySelection" }, // Begin/end of buffer + { 0, 0, + 0, 0 } // Horizontal page movement +}; + +static void moveCursorCallback(GtkWidget* widget, GtkMovementStep step, gint count, gboolean extendSelection, EditorClient* client) +{ + g_signal_stop_emission_by_name(widget, "move-cursor"); + int direction = count > 0 ? 1 : 0; + if (extendSelection) + direction += 2; + + if (static_cast<unsigned>(step) >= G_N_ELEMENTS(gtkMoveCommands)) + return; + + const char* rawCommand = gtkMoveCommands[step][direction]; + if (!rawCommand) + return; + + for (int i = 0; i < abs(count); i++) + client->addPendingEditorCommand(rawCommand); +} + +void EditorClient::updatePendingComposition(const gchar* newComposition) +{ + // The IMContext may signal more than one completed composition in a row, + // in which case we want to append them, rather than overwrite the old one. + if (!m_pendingComposition) + m_pendingComposition.set(g_strdup(newComposition)); + else + m_pendingComposition.set(g_strconcat(m_pendingComposition.get(), newComposition, NULL)); +} + +void EditorClient::willSetInputMethodState() +{ +} + +void EditorClient::setInputMethodState(bool active) +{ + WebKitWebViewPrivate* priv = m_webView->priv; + + if (active) + gtk_im_context_focus_in(priv->imContext.get()); + else + gtk_im_context_focus_out(priv->imContext.get()); + +#ifdef MAEMO_CHANGES + if (active) + hildon_gtk_im_context_show(priv->imContext.get()); + else + hildon_gtk_im_context_hide(priv->imContext.get()); +#endif +} + +bool EditorClient::shouldDeleteRange(Range* range) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + g_signal_emit_by_name(m_webView, "should-delete-range", kitRange.get(), &accept); + return accept; +} + +bool EditorClient::shouldShowDeleteInterface(HTMLElement* element) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMHTMLElement> kitElement(adoptGRef(kit(element))); + g_signal_emit_by_name(m_webView, "should-show-delete-interface-for-element", kitElement.get(), &accept); + return accept; +} + +bool EditorClient::isContinuousSpellCheckingEnabled() +{ + WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView); + + gboolean enabled; + g_object_get(settings, "enable-spell-checking", &enabled, NULL); + + return enabled; +} + +bool EditorClient::isGrammarCheckingEnabled() +{ + notImplemented(); + return false; +} + +int EditorClient::spellCheckerDocumentTag() +{ + notImplemented(); + return 0; +} + +bool EditorClient::shouldBeginEditing(WebCore::Range* range) +{ + clearPendingComposition(); + + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + g_signal_emit_by_name(m_webView, "should-begin-editing", kitRange.get(), &accept); + return accept; +} + +bool EditorClient::shouldEndEditing(WebCore::Range* range) +{ + clearPendingComposition(); + + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + g_signal_emit_by_name(m_webView, "should-end-editing", kitRange.get(), &accept); + return accept; +} + +static WebKitInsertAction kit(EditorInsertAction action) +{ + switch (action) { + case EditorInsertActionTyped: + return WEBKIT_INSERT_ACTION_TYPED; + case EditorInsertActionPasted: + return WEBKIT_INSERT_ACTION_PASTED; + case EditorInsertActionDropped: + return WEBKIT_INSERT_ACTION_DROPPED; + } + ASSERT_NOT_REACHED(); + return WEBKIT_INSERT_ACTION_TYPED; +} + +bool EditorClient::shouldInsertText(const String& string, Range* range, EditorInsertAction action) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + g_signal_emit_by_name(m_webView, "should-insert-text", string.utf8().data(), kitRange.get(), kit(action), &accept); + return accept; +} + +static WebKitSelectionAffinity kit(EAffinity affinity) +{ + switch (affinity) { + case UPSTREAM: + return WEBKIT_SELECTION_AFFINITY_UPSTREAM; + case DOWNSTREAM: + return WEBKIT_SELECTION_AFFINITY_DOWNSTREAM; + } + ASSERT_NOT_REACHED(); + return WEBKIT_SELECTION_AFFINITY_UPSTREAM; +} + +bool EditorClient::shouldChangeSelectedRange(Range* fromRange, Range* toRange, EAffinity affinity, bool stillSelecting) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitFromRange(fromRange ? adoptGRef(kit(fromRange)) : 0); + GRefPtr<WebKitDOMRange> kitToRange(toRange ? adoptGRef(kit(toRange)) : 0); + g_signal_emit_by_name(m_webView, "should-change-selected-range", kitFromRange.get(), kitToRange.get(), + kit(affinity), stillSelecting, &accept); + return accept; +} + +bool EditorClient::shouldApplyStyle(WebCore::CSSStyleDeclaration* declaration, WebCore::Range* range) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMCSSStyleDeclaration> kitDeclaration(kit(declaration)); + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + g_signal_emit_by_name(m_webView, "should-apply-style", kitDeclaration.get(), kitRange.get(), &accept); + return accept; +} + +bool EditorClient::shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*) +{ + notImplemented(); + return true; +} + +void EditorClient::didBeginEditing() +{ + g_signal_emit_by_name(m_webView, "editing-began"); +} + +void EditorClient::respondToChangedContents() +{ + g_signal_emit_by_name(m_webView, "user-changed-contents"); +} + +static WebKitWebView* viewSettingClipboard = 0; +static void collapseSelection(GtkClipboard* clipboard, WebKitWebView* webView) +{ + if (viewSettingClipboard && viewSettingClipboard == webView) + return; + + WebCore::Page* corePage = core(webView); + if (!corePage || !corePage->focusController()) + return; + + Frame* frame = corePage->focusController()->focusedOrMainFrame(); + + // Collapse the selection without clearing it + ASSERT(frame); + frame->selection()->setBase(frame->selection()->extent(), frame->selection()->affinity()); +} + +#if PLATFORM(X11) +static void setSelectionPrimaryClipboardIfNeeded(WebKitWebView* webView) +{ + if (!gtk_widget_has_screen(GTK_WIDGET(webView))) + return; + + GtkClipboard* clipboard = gtk_widget_get_clipboard(GTK_WIDGET(webView), GDK_SELECTION_PRIMARY); + DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard); + WebCore::Page* corePage = core(webView); + Frame* targetFrame = corePage->focusController()->focusedOrMainFrame(); + + if (!targetFrame->selection()->isRange()) + return; + + dataObject->clear(); + dataObject->setRange(targetFrame->selection()->toNormalizedRange()); + + viewSettingClipboard = webView; + GClosure* callback = g_cclosure_new_object(G_CALLBACK(collapseSelection), G_OBJECT(webView)); + g_closure_set_marshal(callback, g_cclosure_marshal_VOID__VOID); + pasteboardHelperInstance()->writeClipboardContents(clipboard, callback); + viewSettingClipboard = 0; +} +#endif + +void EditorClient::respondToChangedSelection() +{ + g_signal_emit_by_name(m_webView, "selection-changed"); + + WebKitWebViewPrivate* priv = m_webView->priv; + WebCore::Page* corePage = core(m_webView); + Frame* targetFrame = corePage->focusController()->focusedOrMainFrame(); + + if (!targetFrame) + return; + + if (targetFrame->editor()->ignoreCompositionSelectionChange()) + return; + +#if PLATFORM(X11) + setSelectionPrimaryClipboardIfNeeded(m_webView); +#endif + + if (!targetFrame->editor()->hasComposition()) + return; + + unsigned start; + unsigned end; + if (!targetFrame->editor()->getCompositionSelection(start, end)) { + // gtk_im_context_reset() clears the composition for us. + gtk_im_context_reset(priv->imContext.get()); + targetFrame->editor()->confirmCompositionWithoutDisturbingSelection(); + } +} + +void EditorClient::didEndEditing() +{ + g_signal_emit_by_name(m_webView, "editing-ended"); +} + +void EditorClient::didWriteSelectionToPasteboard() +{ + notImplemented(); +} + +void EditorClient::didSetSelectionTypesForPasteboard() +{ + notImplemented(); +} + +bool EditorClient::isEditable() +{ + return webkit_web_view_get_editable(m_webView); +} + +void EditorClient::registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand> command) +{ + if (undoStack.size() == maximumUndoStackDepth) + undoStack.removeFirst(); + if (!m_isInRedo) + redoStack.clear(); + undoStack.append(command); +} + +void EditorClient::registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand> command) +{ + redoStack.append(command); +} + +void EditorClient::clearUndoRedoOperations() +{ + undoStack.clear(); + redoStack.clear(); +} + +bool EditorClient::canUndo() const +{ + return !undoStack.isEmpty(); +} + +bool EditorClient::canRedo() const +{ + return !redoStack.isEmpty(); +} + +void EditorClient::undo() +{ + if (canUndo()) { + RefPtr<WebCore::EditCommand> command(*(--undoStack.end())); + undoStack.remove(--undoStack.end()); + // unapply will call us back to push this command onto the redo stack. + command->unapply(); + } +} + +void EditorClient::redo() +{ + if (canRedo()) { + RefPtr<WebCore::EditCommand> command(*(--redoStack.end())); + redoStack.remove(--redoStack.end()); + + ASSERT(!m_isInRedo); + m_isInRedo = true; + // reapply will call us back to push this command onto the undo stack. + command->reapply(); + m_isInRedo = false; + } +} + +bool EditorClient::shouldInsertNode(Node* node, Range* range, EditorInsertAction action) +{ + gboolean accept = TRUE; + GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range))); + GRefPtr<WebKitDOMNode> kitNode(adoptGRef(kit(node))); + g_signal_emit_by_name(m_webView, "should-insert-node", kitNode.get(), kitRange.get(), kit(action), &accept); + return accept; +} + +void EditorClient::pageDestroyed() +{ + delete this; +} + +bool EditorClient::smartInsertDeleteEnabled() +{ + notImplemented(); + return false; +} + +bool EditorClient::isSelectTrailingWhitespaceEnabled() +{ + notImplemented(); + return false; +} + +void EditorClient::toggleContinuousSpellChecking() +{ + WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView); + + gboolean enabled; + g_object_get(settings, "enable-spell-checking", &enabled, NULL); + + g_object_set(settings, "enable-spell-checking", !enabled, NULL); +} + +void EditorClient::toggleGrammarChecking() +{ +} + +static const unsigned CtrlKey = 1 << 0; +static const unsigned AltKey = 1 << 1; +static const unsigned ShiftKey = 1 << 2; + +struct KeyDownEntry { + unsigned virtualKey; + unsigned modifiers; + const char* name; +}; + +struct KeyPressEntry { + unsigned charCode; + unsigned modifiers; + const char* name; +}; + +static const KeyDownEntry keyDownEntries[] = { + { 'B', CtrlKey, "ToggleBold" }, + { 'I', CtrlKey, "ToggleItalic" }, + { VK_ESCAPE, 0, "Cancel" }, + { VK_OEM_PERIOD, CtrlKey, "Cancel" }, + { VK_TAB, 0, "InsertTab" }, + { VK_TAB, ShiftKey, "InsertBacktab" }, + { VK_RETURN, 0, "InsertNewline" }, + { VK_RETURN, CtrlKey, "InsertNewline" }, + { VK_RETURN, AltKey, "InsertNewline" }, + { VK_RETURN, AltKey | ShiftKey, "InsertNewline" }, +}; + +static const KeyPressEntry keyPressEntries[] = { + { '\t', 0, "InsertTab" }, + { '\t', ShiftKey, "InsertBacktab" }, + { '\r', 0, "InsertNewline" }, + { '\r', CtrlKey, "InsertNewline" }, + { '\r', AltKey, "InsertNewline" }, + { '\r', AltKey | ShiftKey, "InsertNewline" }, +}; + +void EditorClient::generateEditorCommands(const KeyboardEvent* event) +{ + ASSERT(event->type() == eventNames().keydownEvent || event->type() == eventNames().keypressEvent); + + m_pendingEditorCommands.clear(); + + // First try to interpret the command as a native GTK+ key binding. +#ifdef GTK_API_VERSION_2 + gtk_bindings_activate_event(GTK_OBJECT(m_nativeWidget.get()), event->keyEvent()->gdkEventKey()); +#else + gtk_bindings_activate_event(G_OBJECT(m_nativeWidget.get()), event->keyEvent()->gdkEventKey()); +#endif + if (m_pendingEditorCommands.size() > 0) + return; + + static HashMap<int, const char*> keyDownCommandsMap; + static HashMap<int, const char*> keyPressCommandsMap; + + if (keyDownCommandsMap.isEmpty()) { + for (unsigned i = 0; i < G_N_ELEMENTS(keyDownEntries); i++) + keyDownCommandsMap.set(keyDownEntries[i].modifiers << 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].name); + + for (unsigned i = 0; i < G_N_ELEMENTS(keyPressEntries); i++) + keyPressCommandsMap.set(keyPressEntries[i].modifiers << 16 | keyPressEntries[i].charCode, keyPressEntries[i].name); + } + + unsigned modifiers = 0; + if (event->shiftKey()) + modifiers |= ShiftKey; + if (event->altKey()) + modifiers |= AltKey; + if (event->ctrlKey()) + modifiers |= CtrlKey; + + // For keypress events, we want charCode(), but keyCode() does that. + int mapKey = modifiers << 16 | event->keyCode(); + if (!mapKey) + return; + HashMap<int, const char*>* commandMap = event->type() == eventNames().keydownEvent ? + &keyDownCommandsMap : &keyPressCommandsMap; + if (const char* commandString = commandMap->get(mapKey)) + m_pendingEditorCommands.append(commandString); +} + +bool EditorClient::executePendingEditorCommands(Frame* frame, bool allowTextInsertion) +{ + Vector<Editor::Command> commands; + for (size_t i = 0; i < m_pendingEditorCommands.size(); i++) { + const char* commandString = m_pendingEditorCommands.at(i); + ASSERT(commandString); + Editor::Command command = frame->editor()->command(commandString); + if (command.isTextInsertion() && !allowTextInsertion) + return false; + + commands.append(command); + } + + bool success = true; + for (size_t i = 0; i < commands.size(); i++) { + if (!commands.at(i).execute()) { + success = false; + break; + } + } + + m_pendingEditorCommands.clear(); + + // If we successfully completed all editor commands, then + // this signals a canceling of the composition. + if (success) + clearPendingComposition(); + + return success; +} + +void EditorClient::handleKeyboardEvent(KeyboardEvent* event) +{ + Node* node = event->target()->toNode(); + ASSERT(node); + Frame* frame = node->document()->frame(); + ASSERT(frame); + + const PlatformKeyboardEvent* platformEvent = event->keyEvent(); + if (!platformEvent) + return; + + generateEditorCommands(event); + if (m_pendingEditorCommands.size() > 0) { + + // During RawKeyDown events if an editor command will insert text, defer + // the insertion until the keypress event. We want keydown to bubble up + // through the DOM first. + if (platformEvent->type() == PlatformKeyboardEvent::RawKeyDown) { + if (executePendingEditorCommands(frame, false)) + event->setDefaultHandled(); + + return; + } + + // Only allow text insertion commands if the current node is editable. + if (executePendingEditorCommands(frame, frame->editor()->canEdit())) { + event->setDefaultHandled(); + return; + } + } + + // Don't allow text insertion for nodes that cannot edit. + if (!frame->editor()->canEdit()) + return; + + // This is just a normal text insertion, so wait to execute the insertion + // until a keypress event happens. This will ensure that the insertion will not + // be reflected in the contents of the field until the keyup DOM event. + if (event->type() == eventNames().keypressEvent) { + + // If we have a pending composition at this point, it happened while + // filtering a keypress, so we treat it as a normal text insertion. + // This will also ensure that if the keypress event handler changed the + // currently focused node, the text is still inserted into the original + // node (insertText() has this logic, but confirmComposition() does not). + if (m_pendingComposition) { + frame->editor()->insertText(String::fromUTF8(m_pendingComposition.get()), event); + clearPendingComposition(); + event->setDefaultHandled(); + + } else { + // Don't insert null or control characters as they can result in unexpected behaviour + if (event->charCode() < ' ') + return; + + // Don't insert anything if a modifier is pressed + if (platformEvent->ctrlKey() || platformEvent->altKey()) + return; + + if (frame->editor()->insertText(platformEvent->text(), event)) + event->setDefaultHandled(); + } + } +} + +void EditorClient::handleInputMethodKeydown(KeyboardEvent* event) +{ + Frame* targetFrame = core(m_webView)->focusController()->focusedOrMainFrame(); + if (!targetFrame || !targetFrame->editor()->canEdit()) + return; + + WebKitWebViewPrivate* priv = m_webView->priv; + + m_preventNextCompositionCommit = false; + + // Some IM contexts (e.g. 'simple') will act as if they filter every + // keystroke and just issue a 'commit' signal during handling. In situations + // where the 'commit' signal happens during filtering and there is no active + // composition, act as if the keystroke was not filtered. The one exception to + // this is when the keyval parameter of the GdkKeyEvent is 0, which is often + // a key event sent by the IM context for committing the current composition. + + // Here is a typical sequence of events for the 'simple' context: + // 1. GDK key press event -> webkit_web_view_key_press_event + // 2. Keydown event -> EditorClient::handleInputMethodKeydown + // gtk_im_context_filter_keypress returns true, but there is a pending + // composition so event->preventDefault is not called (below). + // 3. Keydown event bubbles through the DOM + // 4. Keydown event -> EditorClient::handleKeyboardEvent + // No action taken. + // 4. GDK key release event -> webkit_web_view_key_release_event + // 5. gtk_im_context_filter_keypress is called on the release event. + // Simple does not filter most key releases, so the event continues. + // 6. Keypress event bubbles through the DOM. + // 7. Keypress event -> EditorClient::handleKeyboardEvent + // pending composition is inserted. + // 8. Keyup event bubbles through the DOM. + // 9. Keyup event -> EditorClient::handleKeyboardEvent + // No action taken. + + // There are two situations where we do filter the keystroke: + // 1. The IMContext instructed us to filter and we have no pending composition. + // 2. The IMContext did not instruct us to filter, but the keystroke caused a + // composition in progress to finish. It seems that sometimes SCIM will finish + // a composition and not mark the keystroke as filtered. + m_treatContextCommitAsKeyEvent = (!targetFrame->editor()->hasComposition()) + && event->keyEvent()->gdkEventKey()->keyval; + clearPendingComposition(); + if ((gtk_im_context_filter_keypress(priv->imContext.get(), event->keyEvent()->gdkEventKey()) && !m_pendingComposition) + || (!m_treatContextCommitAsKeyEvent && !targetFrame->editor()->hasComposition())) + event->preventDefault(); + + m_treatContextCommitAsKeyEvent = false; +} + +void EditorClient::handleInputMethodMousePress() +{ + Frame* targetFrame = core(m_webView)->focusController()->focusedOrMainFrame(); + + if (!targetFrame || !targetFrame->editor()->canEdit()) + return; + + WebKitWebViewPrivate* priv = m_webView->priv; + + // When a mouse press fires, the commit signal happens during a composition. + // In this case, if the focused node is changed, the commit signal happens in a diffrent node. + // Therefore, we need to confirm the current compositon and ignore the next commit signal. + GOwnPtr<gchar> newPreedit(0); + gtk_im_context_get_preedit_string(priv->imContext.get(), &newPreedit.outPtr(), 0, 0); + + if (g_utf8_strlen(newPreedit.get(), -1)) { + targetFrame->editor()->confirmComposition(); + m_preventNextCompositionCommit = true; + gtk_im_context_reset(priv->imContext.get()); + } +} + +EditorClient::EditorClient(WebKitWebView* webView) + : m_isInRedo(false) + , m_webView(webView) + , m_preventNextCompositionCommit(false) + , m_treatContextCommitAsKeyEvent(false) + , m_nativeWidget(gtk_text_view_new()) +{ + WebKitWebViewPrivate* priv = m_webView->priv; + g_signal_connect(priv->imContext.get(), "commit", G_CALLBACK(imContextCommitted), this); + g_signal_connect(priv->imContext.get(), "preedit-changed", G_CALLBACK(imContextPreeditChanged), this); + + g_signal_connect(m_nativeWidget.get(), "backspace", G_CALLBACK(backspaceCallback), this); + g_signal_connect(m_nativeWidget.get(), "cut-clipboard", G_CALLBACK(cutClipboardCallback), this); + g_signal_connect(m_nativeWidget.get(), "copy-clipboard", G_CALLBACK(copyClipboardCallback), this); + g_signal_connect(m_nativeWidget.get(), "paste-clipboard", G_CALLBACK(pasteClipboardCallback), this); + g_signal_connect(m_nativeWidget.get(), "select-all", G_CALLBACK(selectAllCallback), this); + g_signal_connect(m_nativeWidget.get(), "move-cursor", G_CALLBACK(moveCursorCallback), this); + g_signal_connect(m_nativeWidget.get(), "delete-from-cursor", G_CALLBACK(deleteFromCursorCallback), this); + g_signal_connect(m_nativeWidget.get(), "toggle-overwrite", G_CALLBACK(toggleOverwriteCallback), this); + g_signal_connect(m_nativeWidget.get(), "popup-menu", G_CALLBACK(popupMenuCallback), this); + g_signal_connect(m_nativeWidget.get(), "show-help", G_CALLBACK(showHelpCallback), this); +} + +EditorClient::~EditorClient() +{ + WebKitWebViewPrivate* priv = m_webView->priv; + g_signal_handlers_disconnect_by_func(priv->imContext.get(), (gpointer)imContextCommitted, this); + g_signal_handlers_disconnect_by_func(priv->imContext.get(), (gpointer)imContextPreeditChanged, this); +} + +void EditorClient::textFieldDidBeginEditing(Element*) +{ +} + +void EditorClient::textFieldDidEndEditing(Element*) +{ +} + +void EditorClient::textDidChangeInTextField(Element*) +{ +} + +bool EditorClient::doTextFieldCommandFromEvent(Element*, KeyboardEvent*) +{ + return false; +} + +void EditorClient::textWillBeDeletedInTextField(Element*) +{ + notImplemented(); +} + +void EditorClient::textDidChangeInTextArea(Element*) +{ + notImplemented(); +} + +void EditorClient::ignoreWordInSpellDocument(const String& text) +{ + GSList* dicts = webkitWebViewGetEnchantDicts(m_webView); + + for (; dicts; dicts = dicts->next) { + EnchantDict* dict = static_cast<EnchantDict*>(dicts->data); + + enchant_dict_add_to_session(dict, text.utf8().data(), -1); + } +} + +void EditorClient::learnWord(const String& text) +{ + GSList* dicts = webkitWebViewGetEnchantDicts(m_webView); + + for (; dicts; dicts = dicts->next) { + EnchantDict* dict = static_cast<EnchantDict*>(dicts->data); + + enchant_dict_add_to_personal(dict, text.utf8().data(), -1); + } +} + +void EditorClient::checkSpellingOfString(const UChar* text, int length, int* misspellingLocation, int* misspellingLength) +{ + GSList* dicts = webkitWebViewGetEnchantDicts(m_webView); + if (!dicts) + return; + + gchar* ctext = g_utf16_to_utf8(const_cast<gunichar2*>(text), length, 0, 0, 0); + int utflen = g_utf8_strlen(ctext, -1); + + PangoLanguage* language = pango_language_get_default(); + PangoLogAttr* attrs = g_new(PangoLogAttr, utflen+1); + + // pango_get_log_attrs uses an aditional position at the end of the text. + pango_get_log_attrs(ctext, -1, -1, language, attrs, utflen+1); + + for (int i = 0; i < length+1; i++) { + // We go through each character until we find an is_word_start, + // then we get into an inner loop to find the is_word_end corresponding + // to it. + if (attrs[i].is_word_start) { + int start = i; + int end = i; + int wordLength; + + while (attrs[end].is_word_end < 1) + end++; + + wordLength = end - start; + // Set the iterator to be at the current word end, so we don't + // check characters twice. + i = end; + + for (; dicts; dicts = dicts->next) { + EnchantDict* dict = static_cast<EnchantDict*>(dicts->data); + gchar* cstart = g_utf8_offset_to_pointer(ctext, start); + gint bytes = static_cast<gint>(g_utf8_offset_to_pointer(ctext, end) - cstart); + gchar* word = g_new0(gchar, bytes+1); + int result; + + g_utf8_strncpy(word, cstart, end - start); + + result = enchant_dict_check(dict, word, -1); + g_free(word); + if (result) { + *misspellingLocation = start; + *misspellingLength = wordLength; + } else { + // Stop checking, this word is ok in at least one dict. + *misspellingLocation = -1; + *misspellingLength = 0; + break; + } + } + } + } + + g_free(attrs); + g_free(ctext); +} + +String EditorClient::getAutoCorrectSuggestionForMisspelledWord(const String& inputWord) +{ + // This method can be implemented using customized algorithms for the particular browser. + // Currently, it computes an empty string. + return String(); +} + +void EditorClient::checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) +{ + notImplemented(); +} + +void EditorClient::updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) +{ + notImplemented(); +} + +void EditorClient::updateSpellingUIWithMisspelledWord(const String&) +{ + notImplemented(); +} + +void EditorClient::showSpellingUI(bool) +{ + notImplemented(); +} + +bool EditorClient::spellingUIIsShowing() +{ + notImplemented(); + return false; +} + +void EditorClient::getGuessesForWord(const String& word, const String& context, WTF::Vector<String>& guesses) +{ + GSList* dicts = webkitWebViewGetEnchantDicts(m_webView); + guesses.clear(); + + for (; dicts; dicts = dicts->next) { + size_t numberOfSuggestions; + size_t i; + + EnchantDict* dict = static_cast<EnchantDict*>(dicts->data); + gchar** suggestions = enchant_dict_suggest(dict, word.utf8().data(), -1, &numberOfSuggestions); + + for (i = 0; i < numberOfSuggestions && i < 10; i++) + guesses.append(String::fromUTF8(suggestions[i])); + + if (numberOfSuggestions > 0) + enchant_dict_free_suggestions(dict, suggestions); + } +} + +} diff --git a/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h new file mode 100644 index 0000000..214dbd6 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> + * Copyright (C) 2006 Zack Rusin <zack@kde.org> + * Copyright (C) 2006 Apple Computer, Inc. + * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org> + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef EditorClientGtk_h +#define EditorClientGtk_h + +#include "EditorClient.h" + +#include <wtf/Deque.h> +#include <wtf/Forward.h> +#include <wtf/gobject/GOwnPtr.h> +#include <wtf/gobject/GRefPtr.h> + +typedef struct _WebKitWebView WebKitWebView; + +namespace WebCore { +class Frame; +class KeyboardEvent; +} + +namespace WebKit { + + class EditorClient : public WebCore::EditorClient { + protected: + bool m_isInRedo; + + WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > undoStack; + WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > redoStack; + + public: + EditorClient(WebKitWebView*); + ~EditorClient(); + WebKitWebView* webView() { return m_webView; } + bool treatContextCommitAsKeyEvent() { return m_treatContextCommitAsKeyEvent; } + bool preventNextCompositionCommit() { return m_preventNextCompositionCommit; } + void clearPendingComposition() { m_pendingComposition.set(0); } + bool hasPendingComposition() { return m_pendingComposition; } + void addPendingEditorCommand(const char* command) { m_pendingEditorCommands.append(command); } + void updatePendingComposition(const char*); + void generateEditorCommands(const WebCore::KeyboardEvent*); + bool executePendingEditorCommands(WebCore::Frame*, bool); + + // from EditorClient + virtual void pageDestroyed(); + + virtual bool shouldDeleteRange(WebCore::Range*); + virtual bool shouldShowDeleteInterface(WebCore::HTMLElement*); + virtual bool smartInsertDeleteEnabled(); + virtual bool isSelectTrailingWhitespaceEnabled(); + virtual bool isContinuousSpellCheckingEnabled(); + virtual void toggleContinuousSpellChecking(); + virtual bool isGrammarCheckingEnabled(); + virtual void toggleGrammarChecking(); + virtual int spellCheckerDocumentTag(); + + virtual bool isEditable(); + + virtual bool shouldBeginEditing(WebCore::Range*); + virtual bool shouldEndEditing(WebCore::Range*); + virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction); + virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction); + virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting); + + virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*); + + virtual bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*); + + virtual void didBeginEditing(); + virtual void respondToChangedContents(); + virtual void respondToChangedSelection(); + virtual void didEndEditing(); + virtual void didWriteSelectionToPasteboard(); + virtual void didSetSelectionTypesForPasteboard(); + + virtual void registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand>); + virtual void registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand>); + virtual void clearUndoRedoOperations(); + + virtual bool canUndo() const; + virtual bool canRedo() const; + + virtual void undo(); + virtual void redo(); + + virtual void handleKeyboardEvent(WebCore::KeyboardEvent*); + virtual void handleInputMethodKeydown(WebCore::KeyboardEvent*); + virtual void handleInputMethodMousePress(); + + virtual void textFieldDidBeginEditing(WebCore::Element*); + virtual void textFieldDidEndEditing(WebCore::Element*); + virtual void textDidChangeInTextField(WebCore::Element*); + virtual bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*); + virtual void textWillBeDeletedInTextField(WebCore::Element*); + virtual void textDidChangeInTextArea(WebCore::Element*); + + virtual void ignoreWordInSpellDocument(const WTF::String&); + virtual void learnWord(const WTF::String&); + virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength); + virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&); + virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength); + virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&); + virtual void updateSpellingUIWithMisspelledWord(const WTF::String&); + virtual void showSpellingUI(bool show); + virtual bool spellingUIIsShowing(); + virtual void getGuessesForWord(const WTF::String& word, const WTF::String& context, WTF::Vector<WTF::String>& guesses); + virtual void willSetInputMethodState(); + virtual void setInputMethodState(bool enabled); + virtual void requestCheckingOfString(WebCore::SpellChecker*, int, const WTF::String&) {} + + private: + WebKitWebView* m_webView; + bool m_preventNextCompositionCommit; + bool m_treatContextCommitAsKeyEvent; + GOwnPtr<gchar> m_pendingComposition; + Vector<const char*> m_pendingEditorCommands; + GRefPtr<GtkWidget> m_nativeWidget; + }; +} + +#endif + +// vim: ts=4 sw=4 et diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp new file mode 100644 index 0000000..8f1a819 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp @@ -0,0 +1,1363 @@ +/* + * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com> + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2007 Christian Dywan <christian@twotoasts.de> + * Copyright (C) 2008, 2009 Collabora Ltd. All rights reserved. + * Copyright (C) 2009, 2010 Gustavo Noronha Silva <gns@gnome.org> + * Copyright (C) Research In Motion Limited 2009. All rights reserved. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "FrameLoaderClientGtk.h" + +#include "ArchiveResource.h" +#include "CachedFrame.h" +#include "Color.h" +#include "DOMObjectCache.h" +#include "DocumentLoader.h" +#include "DocumentLoaderGtk.h" +#include "FormState.h" +#include "FrameLoader.h" +#include "FrameNetworkingContextGtk.h" +#include "FrameTree.h" +#include "FrameView.h" +#include "GOwnPtr.h" +#include "GRefPtr.h" +#include "GtkPluginWidget.h" +#include "HTMLAppletElement.h" +#include "HTMLFormElement.h" +#include "HTMLFrameElement.h" +#include "HTMLFrameOwnerElement.h" +#include "HTMLNames.h" +#include "HTMLPlugInElement.h" +#include "JSDOMBinding.h" +#include "JSDOMWindow.h" +#include "Language.h" +#include "MIMETypeRegistry.h" +#include "MouseEvent.h" +#include "NotImplemented.h" +#include "Page.h" +#include "PluginDatabase.h" +#include "ProgressTracker.h" +#include "RenderPart.h" +#include "ResourceHandle.h" +#include "ResourceRequest.h" +#include "ScriptController.h" +#include "Settings.h" +#include "webkiterror.h" +#include "webkitglobals.h" +#include "webkitglobalsprivate.h" +#include "webkitnetworkrequest.h" +#include "webkitnetworkrequestprivate.h" +#include "webkitnetworkresponse.h" +#include "webkitnetworkresponseprivate.h" +#include "webkitviewportattributes.h" +#include "webkitviewportattributesprivate.h" +#include "webkitwebdatasourceprivate.h" +#include "webkitwebframe.h" +#include "webkitwebframeprivate.h" +#include "webkitwebnavigationaction.h" +#include "webkitwebnavigationactionprivate.h" +#include "webkitwebpolicydecision.h" +#include "webkitwebpolicydecisionprivate.h" +#include "webkitwebresource.h" +#include "webkitwebresourceprivate.h" +#include "webkitwebsettingsprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <JavaScriptCore/APICast.h> +#include <gio/gio.h> +#include <glib.h> +#include <glib/gi18n-lib.h> +#include <stdio.h> +#include <wtf/text/CString.h> +#include <wtf/text/StringConcatenate.h> + +using namespace WebCore; + +namespace WebKit { + +FrameLoaderClient::FrameLoaderClient(WebKitWebFrame* frame) + : m_frame(frame) + , m_policyDecision(0) + , m_loadingErrorPage(false) + , m_pluginView(0) + , m_hasSentResponseToPlugin(false) +{ + ASSERT(m_frame); +} + +FrameLoaderClient::~FrameLoaderClient() +{ + if (m_policyDecision) + g_object_unref(m_policyDecision); +} + +static void initializeDomainsList(HashSet<String>& googleDomains) +{ + // Google search domains. + googleDomains.add("biz"); + googleDomains.add("com"); + googleDomains.add("net"); + googleDomains.add("org"); + googleDomains.add("ae"); + googleDomains.add("ag"); + googleDomains.add("am"); + googleDomains.add("at"); + googleDomains.add("az"); + googleDomains.add("be"); + googleDomains.add("bi"); + googleDomains.add("ca"); + googleDomains.add("cc"); + googleDomains.add("cd"); + googleDomains.add("cg"); + googleDomains.add("ch"); + googleDomains.add("cl"); + googleDomains.add("com.br"); + googleDomains.add("co.uk"); + googleDomains.add("co.kr"); + googleDomains.add("co.jp"); + googleDomains.add("de"); + googleDomains.add("dj"); + googleDomains.add("dk"); + googleDomains.add("es"); + googleDomains.add("fi"); + googleDomains.add("fm"); + googleDomains.add("fr"); + googleDomains.add("gg"); + googleDomains.add("gl"); + googleDomains.add("gm"); + googleDomains.add("gs"); + googleDomains.add("hn"); + googleDomains.add("hu"); + googleDomains.add("ie"); + googleDomains.add("it"); + googleDomains.add("je"); + googleDomains.add("kz"); + googleDomains.add("li"); + googleDomains.add("lt"); + googleDomains.add("lu"); + googleDomains.add("lv"); + googleDomains.add("ma"); + googleDomains.add("ms"); + googleDomains.add("mu"); + googleDomains.add("mw"); + googleDomains.add("nl"); + googleDomains.add("no"); + googleDomains.add("nu"); + googleDomains.add("pl"); + googleDomains.add("pn"); + googleDomains.add("pt"); + googleDomains.add("ru"); + googleDomains.add("rw"); + googleDomains.add("sh"); + googleDomains.add("sk"); + googleDomains.add("sm"); + googleDomains.add("st"); + googleDomains.add("td"); + googleDomains.add("tk"); + googleDomains.add("tp"); + googleDomains.add("tv"); + googleDomains.add("us"); + googleDomains.add("uz"); + googleDomains.add("ws"); +} + +static bool isGoogleDomain(String host) +{ + DEFINE_STATIC_LOCAL(HashSet<String>, googleDomains, ()); + DEFINE_STATIC_LOCAL(Vector<String>, otherGoogleDomains, ()); + + if (googleDomains.isEmpty()) { + otherGoogleDomains.append("gmail.com"); + otherGoogleDomains.append("youtube.com"); + otherGoogleDomains.append("gstatic.com"); + otherGoogleDomains.append("ytimg.com"); + + initializeDomainsList(googleDomains); + } + + // First check if this is one of the various google.com international domains. + int position = host.find(".google."); + if (position > 0 && googleDomains.contains(host.substring(position + sizeof(".google.")))) + return true; + + // Then we check the possibility of it being one of the other, .com-only google domains. + for (unsigned int i = 0; i < otherGoogleDomains.size(); i++) { + if (host.endsWith(otherGoogleDomains.at(i))) + return true; + } + + return false; +} + +String FrameLoaderClient::userAgent(const KURL& url) +{ + WebKitWebSettings* settings = webkit_web_view_get_settings(getViewFromFrame(m_frame)); + + gboolean useQuirks; + g_object_get(settings, "enable-site-specific-quirks", &useQuirks, NULL); + + // For Google domains, drop the browser's custom User Agent string, and use the standard + // WebKit/Safari one, so they don't give us a broken experience. + if (useQuirks && isGoogleDomain(url.host())) + return webkitUserAgent(); + + return String::fromUTF8(webkit_web_settings_get_user_agent(settings)); +} + +static void notifyStatus(WebKitWebFrame* frame, WebKitLoadStatus loadStatus) +{ + frame->priv->loadStatus = loadStatus; + g_object_notify(G_OBJECT(frame), "load-status"); + + WebKitWebView* webView = getViewFromFrame(frame); + if (frame == webkit_web_view_get_main_frame(webView)) { + webView->priv->loadStatus = loadStatus; + g_object_notify(G_OBJECT(webView), "load-status"); + } +} + +static void loadDone(WebKitWebFrame* frame, bool didSucceed) +{ + // FIXME: load-done is deprecated. Please remove when signal's been removed. + g_signal_emit_by_name(frame, "load-done", didSucceed); + notifyStatus(frame, WEBKIT_LOAD_FINISHED); +} + +WTF::PassRefPtr<WebCore::DocumentLoader> FrameLoaderClient::createDocumentLoader(const WebCore::ResourceRequest& request, const SubstituteData& substituteData) +{ + RefPtr<WebKit::DocumentLoader> loader = WebKit::DocumentLoader::create(request, substituteData); + + GRefPtr<WebKitWebDataSource> webDataSource(adoptGRef(kitNew(loader.get()))); + loader->setDataSource(webDataSource.get()); + + return loader.release(); +} + +void FrameLoaderClient::dispatchWillSubmitForm(FramePolicyFunction policyFunction, PassRefPtr<FormState>) +{ + // FIXME: This is surely too simple + ASSERT(policyFunction); + if (!policyFunction) + return; + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyUse); +} + +void FrameLoaderClient::committedLoad(WebCore::DocumentLoader* loader, const char* data, int length) +{ + if (!m_pluginView) { + ASSERT(loader->frame()); + loader->commitData(data, length); + + Frame* coreFrame = loader->frame(); + if (coreFrame && coreFrame->document()->isMediaDocument()) + loader->cancelMainResourceLoad(coreFrame->loader()->client()->pluginWillHandleLoadError(loader->response())); + } + + if (m_pluginView) { + if (!m_hasSentResponseToPlugin) { + m_pluginView->didReceiveResponse(loader->response()); + m_hasSentResponseToPlugin = true; + } + + // FIXME: We may want to investigate refactoring our plugin loading + // code to be similar to mac's. + // Also, see http://trac.webkit.org/changeset/24118. + if (!m_pluginView) + return; + + m_pluginView->didReceiveData(data, length); + } +} + +bool +FrameLoaderClient::shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) +{ + notImplemented(); + return false; +} + +void FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) +{ + notImplemented(); +} + +// We convert this to string because it's easier to use strings as +// keys in a GHashTable. +static char* toString(unsigned long identifier) +{ + return g_strdup_printf("%ld", identifier); +} + +void FrameLoaderClient::dispatchWillSendRequest(WebCore::DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse) +{ + GRefPtr<WebKitNetworkResponse> networkResponse(0); + + // We are adding one more resource to the load, or maybe we are + // just redirecting a load. + if (redirectResponse.isNull()) + static_cast<WebKit::DocumentLoader*>(loader)->increaseLoadCount(identifier); + else + networkResponse = adoptGRef(kitNew(redirectResponse)); + + WebKitWebView* webView = getViewFromFrame(m_frame); + GOwnPtr<gchar> identifierString(toString(identifier)); + WebKitWebResource* webResource = webkit_web_view_get_resource(webView, identifierString.get()); + GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request))); + + if (!redirectResponse.isNull()) { + // This is a redirect, so we need to update the WebResource's knowledge + // of the URI. + g_free(webResource->priv->uri); + webResource->priv->uri = g_strdup(request.url().string().utf8().data()); + } + + g_signal_emit_by_name(webView, "resource-request-starting", m_frame, webResource, networkRequest.get(), networkResponse.get()); + + // Feed any changes back into the ResourceRequest object. + SoupMessage* message = webkit_network_request_get_message(networkRequest.get()); + if (!message) { + request.setURL(KURL(KURL(), String::fromUTF8(webkit_network_request_get_uri(networkRequest.get())))); + return; + } + + request.updateFromSoupMessage(message); +} + +void FrameLoaderClient::assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader* loader, const ResourceRequest& request) +{ + GOwnPtr<gchar> identifierString(toString(identifier)); + + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(g_object_new(WEBKIT_TYPE_WEB_RESOURCE, "uri", request.url().string().utf8().data(), 0)); + + if (loader == loader->frameLoader()->provisionalDocumentLoader() + && loader->frameLoader()->isLoadingMainFrame()) { + webkit_web_view_add_main_resource(getViewFromFrame(m_frame), identifierString.get(), webResource); + return; + } + + webkit_web_view_add_resource(getViewFromFrame(m_frame), identifierString.get(), webResource); +} + +void FrameLoaderClient::postProgressStartedNotification() +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + g_signal_emit_by_name(webView, "load-started", m_frame); + + g_object_notify(G_OBJECT(webView), "progress"); +} + +void FrameLoaderClient::postProgressEstimateChangedNotification() +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + Page* corePage = core(webView); + + g_signal_emit_by_name(webView, "load-progress-changed", lround(corePage->progress()->estimatedProgress()*100)); + + g_object_notify(G_OBJECT(webView), "progress"); +} + +void FrameLoaderClient::postProgressFinishedNotification() +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + WebKitWebViewPrivate* privateData = webView->priv; + + // We can get a stopLoad() from dispose when the object is being + // destroyed, don't emit the signal in that case. + if (!privateData->disposing) + g_signal_emit_by_name(webView, "load-finished", m_frame); +} + +void FrameLoaderClient::frameLoaderDestroyed() +{ + webkit_web_frame_core_frame_gone(m_frame); + g_object_unref(m_frame); + m_frame = 0; + delete this; +} + +void FrameLoaderClient::dispatchDidReceiveResponse(WebCore::DocumentLoader* loader, unsigned long, const ResourceResponse& response) +{ + // Update our knowledge of request soup flags - some are only set + // after the request is done. + loader->request().setSoupMessageFlags(response.soupMessageFlags()); + + m_response = response; +} + +void FrameLoaderClient::dispatchDecidePolicyForMIMEType(FramePolicyFunction policyFunction, const String& mimeType, const ResourceRequest& resourceRequest) +{ + ASSERT(policyFunction); + if (!policyFunction) + return; + + if (resourceRequest.isNull()) { + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore); + return; + } + + WebKitWebView* page = getViewFromFrame(m_frame); + GRefPtr<WebKitNetworkRequest> request(adoptGRef(kitNew(resourceRequest))); + + WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction); + if (m_policyDecision) + g_object_unref(m_policyDecision); + m_policyDecision = policyDecision; + + gboolean isHandled = false; + g_signal_emit_by_name(page, "mime-type-policy-decision-requested", m_frame, request.get(), mimeType.utf8().data(), policyDecision, &isHandled); + + if (isHandled) + return; + + GRefPtr<WebKitNetworkResponse> networkResponse(adoptGRef(webkit_web_frame_get_network_response(m_frame))); + if (networkResponse) { + ResourceResponse response = core(networkResponse.get()); + if (response.isAttachment()) { + webkit_web_policy_decision_download(policyDecision); + return; + } + } + + if (canShowMIMEType(mimeType)) + webkit_web_policy_decision_use(policyDecision); + else + webkit_web_policy_decision_ignore(policyDecision); +} + +static WebKitWebNavigationAction* getNavigationAction(const NavigationAction& action, const char* targetFrame) +{ + gint button = -1; + + const Event* event = action.event(); + if (event && event->isMouseEvent()) { + const MouseEvent* mouseEvent = static_cast<const MouseEvent*>(event); + // DOM button values are 0, 1 and 2 for left, middle and right buttons. + // GTK+ uses 1, 2 and 3, so let's add 1 to remain consistent. + button = mouseEvent->button() + 1; + } + + gint modifierFlags = 0; + UIEventWithKeyState* keyStateEvent = findEventWithKeyState(const_cast<Event*>(event)); + if (keyStateEvent) { + if (keyStateEvent->shiftKey()) + modifierFlags |= GDK_SHIFT_MASK; + if (keyStateEvent->ctrlKey()) + modifierFlags |= GDK_CONTROL_MASK; + if (keyStateEvent->altKey()) + modifierFlags |= GDK_MOD1_MASK; + if (keyStateEvent->metaKey()) + modifierFlags |= GDK_MOD2_MASK; + } + + return WEBKIT_WEB_NAVIGATION_ACTION(g_object_new(WEBKIT_TYPE_WEB_NAVIGATION_ACTION, + "reason", kit(action.type()), + "original-uri", action.url().string().utf8().data(), + "button", button, + "modifier-state", modifierFlags, + "target-frame", targetFrame, + NULL)); +} + +void FrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction policyFunction, const NavigationAction& action, const ResourceRequest& resourceRequest, PassRefPtr<FormState>, const String& frameName) +{ + ASSERT(policyFunction); + if (!policyFunction) + return; + + if (resourceRequest.isNull()) { + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore); + return; + } + + WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction); + + if (m_policyDecision) + g_object_unref(m_policyDecision); + m_policyDecision = policyDecision; + + WebKitWebView* webView = getViewFromFrame(m_frame); + GRefPtr<WebKitNetworkRequest> request(adoptGRef(webkit_network_request_new(resourceRequest.url().string().utf8().data()))); + GRefPtr<WebKitWebNavigationAction> navigationAction(adoptGRef(getNavigationAction(action, frameName.utf8().data()))); + gboolean isHandled = false; + + g_signal_emit_by_name(webView, "new-window-policy-decision-requested", m_frame, request.get(), navigationAction.get(), policyDecision, &isHandled); + + // FIXME: I think Qt version marshals this to another thread so when we + // have multi-threaded download, we might need to do the same + if (!isHandled) + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyUse); +} + +void FrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunction policyFunction, const NavigationAction& action, const ResourceRequest& resourceRequest, PassRefPtr<FormState>) +{ + ASSERT(policyFunction); + if (!policyFunction) + return; + + if (resourceRequest.isNull()) { + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore); + return; + } + + WebKitWebView* webView = getViewFromFrame(m_frame); + GRefPtr<WebKitNetworkRequest> request(adoptGRef(kitNew(resourceRequest))); + WebKitNavigationResponse response; + /* + * We still support the deprecated navigation-requested signal, if the + * application doesn't ignore the navigation then the new signal is + * emitted. + * navigation-policy-decision-requested must be emitted after + * navigation-requested as the policy decision can be async. + */ + g_signal_emit_by_name(webView, "navigation-requested", m_frame, request.get(), &response); + + if (response == WEBKIT_NAVIGATION_RESPONSE_IGNORE) { + (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore); + return; + } + + WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction); + if (m_policyDecision) + g_object_unref(m_policyDecision); + m_policyDecision = policyDecision; + + GRefPtr<WebKitWebNavigationAction> navigationAction(adoptGRef(getNavigationAction(action, 0))); + gboolean isHandled = false; + g_signal_emit_by_name(webView, "navigation-policy-decision-requested", m_frame, request.get(), navigationAction.get(), policyDecision, &isHandled); + + // FIXME Implement default behavior when we can query the backend what protocols it supports + if (!isHandled) + webkit_web_policy_decision_use(m_policyDecision); +} + +PassRefPtr<Widget> FrameLoaderClient::createPlugin(const IntSize& pluginSize, HTMLPlugInElement* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually) +{ + /* Check if we want to embed a GtkWidget, fallback to plugins later */ + CString urlString = url.string().utf8(); + CString mimeTypeString = mimeType.utf8(); + + ASSERT(paramNames.size() == paramValues.size()); + GRefPtr<GHashTable> hash = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free)); + for (unsigned i = 0; i < paramNames.size(); ++i) { + g_hash_table_insert(hash.get(), + g_strdup(paramNames[i].utf8().data()), + g_strdup(paramValues[i].utf8().data())); + } + + GtkWidget* gtkWidget = 0; + g_signal_emit_by_name(getViewFromFrame(m_frame), "create-plugin-widget", + mimeTypeString.data(), urlString.data(), hash.get(), >kWidget); + if (gtkWidget) + return adoptRef(new GtkPluginWidget(gtkWidget)); + + RefPtr<PluginView> pluginView = PluginView::create(core(m_frame), pluginSize, element, url, paramNames, paramValues, mimeType, loadManually); + + if (pluginView->status() == PluginStatusLoadedSuccessfully) + return pluginView; + + return 0; +} + +PassRefPtr<Frame> FrameLoaderClient::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, + const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) +{ + ASSERT(m_frame); + Frame* parentFrame = core(m_frame); + WebKitWebView* webView = getViewFromFrame(m_frame); + WebCore::Page* page = core(webView); + ASSERT(page == parentFrame->page()); + + WebKitWebFrame* kitFrame = WEBKIT_WEB_FRAME(g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL)); + WebKitWebFramePrivate* framePrivate = kitFrame->priv; + framePrivate->webView = webView; + + RefPtr<Frame> childFrame = Frame::create(page, ownerElement, new FrameLoaderClient(kitFrame)); + framePrivate->coreFrame = childFrame.get(); + + childFrame->tree()->setName(name); + parentFrame->tree()->appendChild(childFrame); + childFrame->init(); + + // The creation of the frame may have run arbitrary JavaScript that removed it from the page already. + if (!childFrame->page()) + return 0; + + g_signal_emit_by_name(webView, "frame-created", kitFrame); + + childFrame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get()); + + // The frame's onload handler may have removed it from the document. + if (!childFrame->tree()->parent()) + return 0; + + return childFrame.release(); +} + +void FrameLoaderClient::didTransferChildFrameToNewDocument(WebCore::Page*) +{ + ASSERT(m_frame); + + // Update the frame's webview to the new parent's webview. + Frame* coreFrame = core(m_frame); + WebKitWebView* webView = getViewFromFrame(m_frame); + + Frame* parentCoreFrame = coreFrame->tree()->parent(); + WebKitWebFrame* parentKitFrame = kit(parentCoreFrame); + WebKitWebView* parentWebView = getViewFromFrame(parentKitFrame); + if (webView != parentWebView) + m_frame->priv->webView = parentWebView; + + ASSERT(core(getViewFromFrame(m_frame)) == coreFrame->page()); +} + +void FrameLoaderClient::transferLoadingResourceFromPage(unsigned long identifier, WebCore::DocumentLoader* docLoader, const WebCore::ResourceRequest& request, WebCore::Page* oldPage) +{ + ASSERT(oldPage != core(m_frame)->page()); + + GOwnPtr<gchar> identifierString(toString(identifier)); + ASSERT(!webkit_web_view_get_resource(getViewFromFrame(m_frame), identifierString.get())); + + assignIdentifierToInitialRequest(identifier, docLoader, request); + + webkit_web_view_remove_resource(kit(oldPage), identifierString.get()); +} + +void FrameLoaderClient::redirectDataToPlugin(Widget* pluginWidget) +{ + ASSERT(!m_pluginView); + m_pluginView = static_cast<PluginView*>(pluginWidget); + m_hasSentResponseToPlugin = false; +} + +PassRefPtr<Widget> FrameLoaderClient::createJavaAppletWidget(const IntSize& pluginSize, HTMLAppletElement* element, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) +{ + return FrameLoaderClient::createPlugin(pluginSize, element, baseURL, paramNames, paramValues, "application/x-java-applet", false); +} + +ObjectContentType FrameLoaderClient::objectContentType(const KURL& url, const String& mimeType) +{ + return FrameLoader::defaultObjectContentType(url, mimeType); +} + +String FrameLoaderClient::overrideMediaType() const +{ + notImplemented(); + return String(); +} + +void FrameLoaderClient::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world) +{ + if (world != mainThreadNormalWorld()) + return; + + // Is this obsolete now? + g_signal_emit_by_name(m_frame, "cleared"); + + Frame* coreFrame = core(m_frame); + ASSERT(coreFrame); + + Settings* settings = coreFrame->settings(); + if (!settings || !settings->isJavaScriptEnabled()) + return; + + // TODO: Consider using g_signal_has_handler_pending() to avoid the overhead + // when there are no handlers. + JSGlobalContextRef context = toGlobalRef(coreFrame->script()->globalObject(mainThreadNormalWorld())->globalExec()); + JSObjectRef windowObject = toRef(coreFrame->script()->globalObject(mainThreadNormalWorld())); + ASSERT(windowObject); + + WebKitWebView* webView = getViewFromFrame(m_frame); + g_signal_emit_by_name(webView, "window-object-cleared", m_frame, context, windowObject); + + // TODO: Re-attach debug clients if present. + // The Win port has an example of how we might do this. +} + +void FrameLoaderClient::documentElementAvailable() +{ +} + +void FrameLoaderClient::didPerformFirstNavigation() const +{ + WebKitCacheModel cacheModel = webkit_get_cache_model(); + // If user agents do not determine the cache model, we use WEBKIT_CACHE_MODEL_WEB_BROWSER by default. + if (cacheModel == WEBKIT_CACHE_MODEL_DEFAULT) + webkit_set_cache_model(WEBKIT_CACHE_MODEL_WEB_BROWSER); +} + +void FrameLoaderClient::registerForIconNotification(bool shouldRegister) +{ + notImplemented(); +} + +void FrameLoaderClient::setMainFrameDocumentReady(bool ready) +{ + if (!ready) + DOMObjectCache::clearByFrame(core(m_frame)); +} + +bool FrameLoaderClient::hasWebView() const +{ + return getViewFromFrame(m_frame); +} + +void FrameLoaderClient::dispatchDidFinishLoad() +{ + if (m_loadingErrorPage) { + m_loadingErrorPage = false; + return; + } + + loadDone(m_frame, true); +} + +void FrameLoaderClient::frameLoadCompleted() +{ + notImplemented(); +} + +void FrameLoaderClient::saveViewStateToItem(HistoryItem*) +{ + notImplemented(); +} + +void FrameLoaderClient::restoreViewState() +{ + notImplemented(); +} + +bool FrameLoaderClient::shouldGoToHistoryItem(HistoryItem* item) const +{ + // FIXME: This is a very simple implementation. More sophisticated + // implementation would delegate the decision to a PolicyDelegate. + // See mac implementation for example. + return item != 0; +} + +void FrameLoaderClient::dispatchDidAddBackForwardItem(HistoryItem*) const +{ +} + +void FrameLoaderClient::dispatchDidRemoveBackForwardItem(HistoryItem*) const +{ +} + +void FrameLoaderClient::dispatchDidChangeBackForwardIndex() const +{ +} + +void FrameLoaderClient::didDisplayInsecureContent() +{ + notImplemented(); +} + +void FrameLoaderClient::didRunInsecureContent(SecurityOrigin*) +{ + notImplemented(); +} + +void FrameLoaderClient::makeRepresentation(WebCore::DocumentLoader*) +{ + notImplemented(); +} + +void FrameLoaderClient::forceLayout() +{ + FrameView* view = core(m_frame)->view(); + if (view) + view->forceLayout(true); +} + +void FrameLoaderClient::forceLayoutForNonHTML() +{ + notImplemented(); +} + +void FrameLoaderClient::setCopiesOnScroll() +{ + notImplemented(); +} + +void FrameLoaderClient::detachedFromParent2() +{ + notImplemented(); +} + +void FrameLoaderClient::detachedFromParent3() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidHandleOnloadEvents() +{ + g_signal_emit_by_name(getViewFromFrame(m_frame), "onload-event", m_frame); +} + +void FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidCancelClientRedirect() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchWillPerformClientRedirect(const KURL&, double, double) +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidChangeLocationWithinPage() +{ + WebKitWebFramePrivate* priv = m_frame->priv; + g_free(priv->uri); + priv->uri = g_strdup(core(m_frame)->loader()->url().prettyURL().utf8().data()); + g_object_notify(G_OBJECT(m_frame), "uri"); + WebKitWebView* webView = getViewFromFrame(m_frame); + if (m_frame == webkit_web_view_get_main_frame(webView)) + g_object_notify(G_OBJECT(webView), "uri"); +} + +void FrameLoaderClient::dispatchDidPushStateWithinPage() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidReplaceStateWithinPage() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidPopStateWithinPage() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchWillClose() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidReceiveIcon() +{ + if (m_loadingErrorPage) + return; + + WebKitWebView* webView = getViewFromFrame(m_frame); + + // Avoid reporting favicons for non-main frames. + if (m_frame != webkit_web_view_get_main_frame(webView)) + return; + + g_object_notify(G_OBJECT(webView), "icon-uri"); + g_signal_emit_by_name(webView, "icon-loaded", webkit_web_view_get_icon_uri(webView)); +} + +void FrameLoaderClient::dispatchDidStartProvisionalLoad() +{ + if (m_loadingErrorPage) + return; + + notifyStatus(m_frame, WEBKIT_LOAD_PROVISIONAL); +} + +void FrameLoaderClient::dispatchDidReceiveTitle(const String& title) +{ + if (m_loadingErrorPage) + return; + + WebKitWebFramePrivate* priv = m_frame->priv; + g_free(priv->title); + priv->title = g_strdup(title.utf8().data()); + + g_signal_emit_by_name(m_frame, "title-changed", priv->title); + g_object_notify(G_OBJECT(m_frame), "title"); + + WebKitWebView* webView = getViewFromFrame(m_frame); + if (m_frame == webkit_web_view_get_main_frame(webView)) { + g_signal_emit_by_name(webView, "title-changed", m_frame, title.utf8().data()); + g_object_notify(G_OBJECT(webView), "title"); + } +} + +void FrameLoaderClient::dispatchDidChangeIcons() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidCommitLoad() +{ + if (m_loadingErrorPage) + return; + + /* Update the URI once first data has been received. + * This means the URI is valid and successfully identify the page that's going to be loaded. + */ + g_object_freeze_notify(G_OBJECT(m_frame)); + + WebKitWebFramePrivate* priv = m_frame->priv; + g_free(priv->uri); + priv->uri = g_strdup(core(m_frame)->loader()->activeDocumentLoader()->url().prettyURL().utf8().data()); + g_free(priv->title); + priv->title = NULL; + g_object_notify(G_OBJECT(m_frame), "uri"); + g_object_notify(G_OBJECT(m_frame), "title"); + + g_signal_emit_by_name(m_frame, "load-committed"); + notifyStatus(m_frame, WEBKIT_LOAD_COMMITTED); + + WebKitWebView* webView = getViewFromFrame(m_frame); + if (m_frame == webkit_web_view_get_main_frame(webView)) { + g_object_freeze_notify(G_OBJECT(webView)); + g_object_notify(G_OBJECT(webView), "uri"); + g_object_notify(G_OBJECT(webView), "title"); + g_object_thaw_notify(G_OBJECT(webView)); + g_signal_emit_by_name(webView, "load-committed", m_frame); + } + + g_object_thaw_notify(G_OBJECT(m_frame)); +} + +void FrameLoaderClient::dispatchDidFinishDocumentLoad() +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + g_signal_emit_by_name(webView, "document-load-finished", m_frame); +} + +void FrameLoaderClient::dispatchDidFirstLayout() +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout() +{ + if (m_loadingErrorPage) + return; + + notifyStatus(m_frame, WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT); +} + +void FrameLoaderClient::dispatchShow() +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + webkit_web_view_notify_ready(webView); +} + +void FrameLoaderClient::cancelPolicyCheck() +{ + //FIXME Add support for more than one policy decision at once + if (m_policyDecision) + webkit_web_policy_decision_cancel(m_policyDecision); +} + +void FrameLoaderClient::dispatchDidLoadMainResource(WebCore::DocumentLoader*) +{ + notImplemented(); +} + +void FrameLoaderClient::revertToProvisionalState(WebCore::DocumentLoader*) +{ + notImplemented(); +} + +void FrameLoaderClient::willChangeTitle(WebCore::DocumentLoader*) +{ + notImplemented(); +} + +void FrameLoaderClient::didChangeTitle(WebCore::DocumentLoader *l) +{ + setTitle(l->title(), l->url()); +} + +bool FrameLoaderClient::canHandleRequest(const ResourceRequest&) const +{ + notImplemented(); + return true; +} + +bool FrameLoaderClient::canShowMIMETypeAsHTML(const String& MIMEType) const +{ + notImplemented(); + return false; +} + +bool FrameLoaderClient::canShowMIMEType(const String& type) const +{ + return (MIMETypeRegistry::isSupportedImageMIMEType(type) + || MIMETypeRegistry::isSupportedNonImageMIMEType(type) + || MIMETypeRegistry::isSupportedMediaMIMEType(type) + || PluginDatabase::installedPlugins()->isMIMETypeRegistered(type)); +} + +bool FrameLoaderClient::representationExistsForURLScheme(const String&) const +{ + notImplemented(); + return false; +} + +String FrameLoaderClient::generatedMIMETypeForURLScheme(const String&) const +{ + notImplemented(); + return String(); +} + +void FrameLoaderClient::finishedLoading(WebCore::DocumentLoader* documentLoader) +{ + if (!m_pluginView) { + FrameLoader* loader = documentLoader->frameLoader(); + loader->writer()->setEncoding(m_response.textEncodingName(), false); + } else { + m_pluginView->didFinishLoading(); + m_pluginView = 0; + m_hasSentResponseToPlugin = false; + } +} + + +void FrameLoaderClient::provisionalLoadStarted() +{ + notImplemented(); +} + +void FrameLoaderClient::didFinishLoad() { + notImplemented(); +} + +void FrameLoaderClient::prepareForDataSourceReplacement() +{ + notImplemented(); +} + +void FrameLoaderClient::setTitle(const String& title, const KURL& url) +{ + WebKitWebFramePrivate* frameData = m_frame->priv; + g_free(frameData->title); + frameData->title = g_strdup(title.utf8().data()); +} + +void FrameLoaderClient::dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived) +{ + notImplemented(); +} + +void FrameLoaderClient::dispatchDidFinishLoading(WebCore::DocumentLoader* loader, unsigned long identifier) +{ + static_cast<WebKit::DocumentLoader*>(loader)->decreaseLoadCount(identifier); + + WebKitWebView* webView = getViewFromFrame(m_frame); + GOwnPtr<gchar> identifierString(toString(identifier)); + WebKitWebResource* webResource = webkit_web_view_get_resource(webView, identifierString.get()); + + // A NULL WebResource means the load has been interrupted, and + // replaced by another one while this resource was being loaded. + if (!webResource) + return; + + const char* uri = webkit_web_resource_get_uri(webResource); + RefPtr<ArchiveResource> coreResource(loader->subresource(KURL(KURL(), uri))); + + // If coreResource is NULL here, the resource failed to load, + // unless it's the main resource. + if (!coreResource && webResource != webkit_web_view_get_main_resource(webView)) + return; + + if (!coreResource) + coreResource = loader->mainResource(); + + webkit_web_resource_init_with_core_resource(webResource, coreResource.get()); + + // FIXME: This function should notify the application that the resource + // finished loading, maybe using a load-status property in the + // WebKitWebResource object, similar to what we do for WebKitWebFrame' + // signal. + notImplemented(); +} + +void FrameLoaderClient::dispatchDidFailLoading(WebCore::DocumentLoader* loader, unsigned long identifier, const ResourceError& error) +{ + static_cast<WebKit::DocumentLoader*>(loader)->decreaseLoadCount(identifier); + + // FIXME: This function should notify the application that the resource failed + // loading, maybe a 'load-error' signal in the WebKitWebResource object. + notImplemented(); +} + +bool FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) +{ + notImplemented(); + return false; +} + +void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error) +{ + dispatchDidFailLoad(error); +} + +void FrameLoaderClient::dispatchDidFailLoad(const ResourceError& error) +{ + if (m_loadingErrorPage) + return; + + notifyStatus(m_frame, WEBKIT_LOAD_FAILED); + + WebKitWebView* webView = getViewFromFrame(m_frame); + GError* webError = g_error_new_literal(g_quark_from_string(error.domain().utf8().data()), + error.errorCode(), + error.localizedDescription().utf8().data()); + gboolean isHandled = false; + g_signal_emit_by_name(webView, "load-error", m_frame, error.failingURL().utf8().data(), webError, &isHandled); + + if (isHandled) { + g_error_free(webError); + return; + } + + if (!shouldFallBack(error)) { + g_error_free(webError); + return; + } + + m_loadingErrorPage = true; + + String content; + gchar* fileContent = 0; + gchar* errorURI = g_filename_to_uri(DATA_DIR"/webkit-1.0/resources/error.html", NULL, NULL); + GFile* errorFile = g_file_new_for_uri(errorURI); + g_free(errorURI); + + if (!errorFile) + content = makeString("<html><body>", webError->message, "</body></html>"); + else { + gboolean loaded = g_file_load_contents(errorFile, 0, &fileContent, 0, 0, 0); + if (!loaded) + content = makeString("<html><body>", webError->message, "</body></html>"); + else + content = String::format(fileContent, error.failingURL().utf8().data(), webError->message); + } + + webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data()); + + g_free(fileContent); + + if (errorFile) + g_object_unref(errorFile); + + g_error_free(webError); +} + +void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse& response) +{ + GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request))); + WebKitWebView* view = getViewFromFrame(m_frame); + + webkit_web_view_request_download(view, networkRequest.get(), response, handle); +} + +ResourceError FrameLoaderClient::cancelledError(const ResourceRequest& request) +{ + return ResourceError(g_quark_to_string(WEBKIT_NETWORK_ERROR), WEBKIT_NETWORK_ERROR_CANCELLED, + request.url().string(), _("Load request cancelled")); +} + +ResourceError FrameLoaderClient::blockedError(const ResourceRequest& request) +{ + return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_USE_RESTRICTED_PORT, + request.url().string(), _("Not allowed to use restricted network port")); +} + +ResourceError FrameLoaderClient::cannotShowURLError(const ResourceRequest& request) +{ + return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_SHOW_URL, + request.url().string(), _("URL cannot be shown")); +} + +ResourceError FrameLoaderClient::interruptForPolicyChangeError(const ResourceRequest& request) +{ + return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE, + request.url().string(), _("Frame load was interrupted")); +} + +ResourceError FrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response) +{ + return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_SHOW_MIME_TYPE, + response.url().string(), _("Content with the specified MIME type cannot be shown")); +} + +ResourceError FrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response) +{ + return ResourceError(g_quark_to_string(WEBKIT_NETWORK_ERROR), WEBKIT_NETWORK_ERROR_FILE_DOES_NOT_EXIST, + response.url().string(), _("File does not exist")); +} + +ResourceError FrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response) +{ + return ResourceError(g_quark_to_string(WEBKIT_PLUGIN_ERROR), WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD, + response.url().string(), _("Plugin will handle load")); +} + +bool FrameLoaderClient::shouldFallBack(const ResourceError& error) +{ + return !(error.isCancellation() || error.errorCode() == WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE || error.errorCode() == WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD); +} + +bool FrameLoaderClient::canCachePage() const +{ + return true; +} + +Frame* FrameLoaderClient::dispatchCreatePage(const NavigationAction&) +{ + WebKitWebView* webView = getViewFromFrame(m_frame); + WebKitWebView* newWebView = 0; + + g_signal_emit_by_name(webView, "create-web-view", m_frame, &newWebView); + + if (!newWebView) + return 0; + + WebKitWebViewPrivate* privateData = newWebView->priv; + return core(privateData->mainFrame); +} + +void FrameLoaderClient::dispatchUnableToImplementPolicy(const ResourceError&) +{ + notImplemented(); +} + +void FrameLoaderClient::setMainDocumentError(WebCore::DocumentLoader*, const ResourceError& error) +{ + if (m_pluginView) { + m_pluginView->didFail(error); + m_pluginView = 0; + m_hasSentResponseToPlugin = false; + } +} + +void FrameLoaderClient::startDownload(const ResourceRequest& request) +{ + GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request))); + WebKitWebView* view = getViewFromFrame(m_frame); + + webkit_web_view_request_download(view, networkRequest.get()); +} + +void FrameLoaderClient::updateGlobalHistory() +{ + notImplemented(); +} + +void FrameLoaderClient::updateGlobalHistoryRedirectLinks() +{ + notImplemented(); +} + +void FrameLoaderClient::savePlatformDataToCachedFrame(CachedFrame* cachedFrame) +{ + // We need to do this here in order to disconnect the scrollbars + // that are being used by the frame that is being cached from the + // adjustments, otherwise they will react to changes in the + // adjustments, and bad things will happen. + if (cachedFrame->view()) + cachedFrame->view()->setGtkAdjustments(0, 0); +} + +static void postCommitFrameViewSetup(WebKitWebFrame *frame, FrameView *view, bool resetValues) +{ + WebKitWebView* containingWindow = getViewFromFrame(frame); + webkit_web_view_clear_resources(containingWindow); + + WebKitWebViewPrivate* priv = containingWindow->priv; + view->setGtkAdjustments(priv->horizontalAdjustment.get(), priv->verticalAdjustment.get(), resetValues); + + // Invalidate the viewport attributes - they will only be valid + // again if the page we're beginning to load now has an + // appropriate viewport meta tag. + containingWindow->priv->viewportAttributes->priv->isValid = FALSE; + g_object_notify(G_OBJECT(containingWindow->priv->viewportAttributes.get()), "valid"); + + if (priv->currentMenu) { + gtk_widget_destroy(GTK_WIDGET(priv->currentMenu)); + priv->currentMenu = 0; + } + + // Do not allow click counting between main frame loads. + priv->previousClickTime = 0; +} + +void FrameLoaderClient::transitionToCommittedFromCachedFrame(CachedFrame* cachedFrame) +{ + ASSERT(cachedFrame->view()); + + Frame* frame = core(m_frame); + if (frame != frame->page()->mainFrame()) + return; + + postCommitFrameViewSetup(m_frame, cachedFrame->view(), false); +} + +void FrameLoaderClient::transitionToCommittedForNewPage() +{ + WebKitWebView* containingWindow = getViewFromFrame(m_frame); + GtkAllocation allocation; +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_get_allocation(GTK_WIDGET(containingWindow), &allocation); +#else + allocation = GTK_WIDGET(containingWindow)->allocation; +#endif + IntSize size = IntSize(allocation.width, allocation.height); + bool transparent = webkit_web_view_get_transparent(containingWindow); + Color backgroundColor = transparent ? WebCore::Color::transparent : WebCore::Color::white; + Frame* frame = core(m_frame); + ASSERT(frame); + + frame->createView(size, backgroundColor, transparent, IntSize(), false); + + // We need to do further manipulation on the FrameView if it was the mainFrame + if (frame != frame->page()->mainFrame()) + return; + + postCommitFrameViewSetup(m_frame, frame->view(), true); +} + +void FrameLoaderClient::didSaveToPageCache() +{ +} + +void FrameLoaderClient::didRestoreFromPageCache() +{ +} + +void FrameLoaderClient::dispatchDidBecomeFrameset(bool) +{ +} + +PassRefPtr<FrameNetworkingContext> FrameLoaderClient::createNetworkingContext() +{ + return FrameNetworkingContextGtk::create(core(m_frame)); +} + +} diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h new file mode 100644 index 0000000..d8d3684 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h @@ -0,0 +1,208 @@ +/* + * Copyright (C) 2006 Zack Rusin <zack@kde.org> + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2008 Collabora Ltd. All rights reserved. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FrameLoaderClientGtk_h +#define FrameLoaderClientGtk_h + +#include "FrameLoaderClient.h" +#include "ResourceResponse.h" +#include "PluginView.h" +#include "webkitwebpolicydecision.h" + +typedef struct _WebKitWebFrame WebKitWebFrame; + +namespace WebKit { + + class FrameLoaderClient : public WebCore::FrameLoaderClient { + public: + FrameLoaderClient(WebKitWebFrame*); + virtual ~FrameLoaderClient(); + virtual void frameLoaderDestroyed(); + + WebKitWebFrame* webFrame() const { return m_frame; } + + virtual bool hasWebView() const; + + virtual void makeRepresentation(WebCore::DocumentLoader*); + virtual void forceLayout(); + virtual void forceLayoutForNonHTML(); + + virtual void setCopiesOnScroll(); + + virtual void detachedFromParent2(); + virtual void detachedFromParent3(); + + virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&); + + virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse); + virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier); + virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); + virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&); + virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&); + virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived); + virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier); + virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&); + virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length); + + virtual void dispatchDidHandleOnloadEvents(); + virtual void dispatchDidReceiveServerRedirectForProvisionalLoad(); + virtual void dispatchDidCancelClientRedirect(); + virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double, double); + virtual void dispatchDidChangeLocationWithinPage(); + virtual void dispatchDidPushStateWithinPage(); + virtual void dispatchDidReplaceStateWithinPage(); + virtual void dispatchDidPopStateWithinPage(); + virtual void dispatchWillClose(); + virtual void dispatchDidReceiveIcon(); + virtual void dispatchDidStartProvisionalLoad(); + virtual void dispatchDidReceiveTitle(const WTF::String&); + virtual void dispatchDidChangeIcons(); + virtual void dispatchDidCommitLoad(); + virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&); + virtual void dispatchDidFailLoad(const WebCore::ResourceError&); + virtual void dispatchDidFinishDocumentLoad(); + virtual void dispatchDidFinishLoad(); + virtual void dispatchDidFirstLayout(); + virtual void dispatchDidFirstVisuallyNonEmptyLayout(); + + virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&); + virtual void dispatchShow(); + + virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WTF::String& MIMEType, const WebCore::ResourceRequest&); + virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WTF::String& frameName); + virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>); + virtual void cancelPolicyCheck(); + + virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&); + + virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { } + virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, WTF::PassRefPtr<WebCore::FormState>); + + virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*); + virtual void revertToProvisionalState(WebCore::DocumentLoader*); + virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&); + + virtual void postProgressStartedNotification(); + virtual void postProgressEstimateChangedNotification(); + virtual void postProgressFinishedNotification(); + + virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, + const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight); + virtual void didTransferChildFrameToNewDocument(WebCore::Page*); + virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*); + virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool); + virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget); + virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues); + virtual WTF::String overrideMediaType() const; + virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*); + virtual void documentElementAvailable(); + virtual void didPerformFirstNavigation() const; + + virtual void registerForIconNotification(bool); + + virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType); + + virtual void setMainFrameDocumentReady(bool); + + virtual void startDownload(const WebCore::ResourceRequest&); + + virtual void willChangeTitle(WebCore::DocumentLoader*); + virtual void didChangeTitle(WebCore::DocumentLoader*); + + virtual void committedLoad(WebCore::DocumentLoader*, const char*, int); + virtual void finishedLoading(WebCore::DocumentLoader*); + + virtual void updateGlobalHistory(); + virtual void updateGlobalHistoryRedirectLinks(); + virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const; + virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const; + virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const; + virtual void dispatchDidChangeBackForwardIndex() const; + + virtual void didDisplayInsecureContent(); + virtual void didRunInsecureContent(WebCore::SecurityOrigin*); + + virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&); + virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&); + virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&); + virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&); + + virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&); + virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&); + virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&); + + virtual bool shouldFallBack(const WebCore::ResourceError&); + + virtual bool canHandleRequest(const WebCore::ResourceRequest&) const; + virtual bool canShowMIMEType(const WTF::String&) const; + virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const; + virtual bool representationExistsForURLScheme(const WTF::String&) const; + virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String&) const; + + virtual void frameLoadCompleted(); + virtual void saveViewStateToItem(WebCore::HistoryItem*); + virtual void restoreViewState(); + virtual void provisionalLoadStarted(); + virtual void didFinishLoad(); + virtual void prepareForDataSourceReplacement(); + + virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&); + virtual void setTitle(const WTF::String& title, const WebCore::KURL&); + + virtual WTF::String userAgent(const WebCore::KURL&); + + virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*); + virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*); + virtual void transitionToCommittedForNewPage(); + + virtual void didSaveToPageCache(); + virtual void didRestoreFromPageCache(); + + virtual void dispatchDidBecomeFrameset(bool); + + virtual bool canCachePage() const; + virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&); + + virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext(); + + private: + WebKitWebFrame* m_frame; + WebCore::ResourceResponse m_response; + WebKitWebPolicyDecision* m_policyDecision; + + bool m_loadingErrorPage; + + // Plugin view to redirect data to + WebCore::PluginView* m_pluginView; + bool m_hasSentResponseToPlugin; + }; + +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h b/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h new file mode 100644 index 0000000..8e4c214 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef FrameNetworkingContextGtk_h +#define FrameNetworkingContextGtk_h + +#include "FrameNetworkingContext.h" + +namespace WebKit { + +class FrameNetworkingContextGtk : public WebCore::FrameNetworkingContext { +public: + static PassRefPtr<FrameNetworkingContextGtk> create(WebCore::Frame* frame) + { + return adoptRef(new FrameNetworkingContextGtk(frame)); + } + + WebCore::Frame* coreFrame() const { return frame(); } + +private: + FrameNetworkingContextGtk(WebCore::Frame* frame) + : WebCore::FrameNetworkingContext(frame) + { + } +}; + +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp new file mode 100644 index 0000000..ea2caa8 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp @@ -0,0 +1,578 @@ +/* + * Copyright (C) 2010 Igalia S.L + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#if ENABLE(VIDEO) + +#include "FullscreenVideoController.h" + +#include "GRefPtrGtk.h" +#include "GtkVersioning.h" +#include "MediaPlayer.h" + +#include <gdk/gdk.h> +#include <gdk/gdkkeysyms.h> +#include <glib/gi18n-lib.h> +#include <gst/gst.h> +#include <gtk/gtk.h> + +using namespace std; +using namespace WebCore; + +#define HUD_AUTO_HIDE_INTERVAL 3000 // 3 seconds +#define PROGRESS_BAR_UPDATE_INTERVAL 150 // 150ms +#define VOLUME_UP_OFFSET 0.05 // 5% +#define VOLUME_DOWN_OFFSET 0.05 // 5% + +// Use symbolic icons only if we build with GTK+-3 support. They could +// be enabled for the GTK+2 build but we'd need to bump the required +// version to at least 2.22. +#if GTK_MAJOR_VERSION < 3 +#define PLAY_ICON_NAME "media-playback-start" +#define PAUSE_ICON_NAME "media-playback-pause" +#define EXIT_FULLSCREEN_ICON_NAME "view-restore" +#else +#define PLAY_ICON_NAME "media-playback-start-symbolic" +#define PAUSE_ICON_NAME "media-playback-pause-symbolic" +#define EXIT_FULLSCREEN_ICON_NAME "view-restore-symbolic" +#endif + +static gboolean hideHudCallback(FullscreenVideoController* controller) +{ + controller->hideHud(); + return FALSE; +} + +static gboolean onFullscreenGtkMotionNotifyEvent(GtkWidget* widget, GdkEventMotion* event, FullscreenVideoController* controller) +{ + controller->showHud(true); + return TRUE; +} + +static void onFullscreenGtkActiveNotification(GtkWidget* widget, GParamSpec* property, FullscreenVideoController* controller) +{ + if (!gtk_window_is_active(GTK_WINDOW(widget))) + controller->hideHud(); +} + +static gboolean onFullscreenGtkConfigureEvent(GtkWidget* widget, GdkEventConfigure* event, FullscreenVideoController* controller) +{ + controller->gtkConfigure(event); + return TRUE; +} + +static void onFullscreenGtkDestroy(GtkWidget* widget, FullscreenVideoController* controller) +{ + controller->exitFullscreen(); +} + +static void togglePlayPauseActivated(GtkAction* action, FullscreenVideoController* controller) +{ + controller->togglePlay(); +} + +static void exitFullscreenActivated(GtkAction* action, FullscreenVideoController* controller) +{ + controller->exitOnUserRequest(); +} + +static gboolean progressBarUpdateCallback(FullscreenVideoController* controller) +{ + return controller->updateHudProgressBar(); +} + +static gboolean timeScaleButtonPressed(GtkWidget* widget, GdkEventButton* event, FullscreenVideoController* controller) +{ + if (event->type != GDK_BUTTON_PRESS) + return FALSE; + + controller->beginSeek(); + return FALSE; +} + +static gboolean timeScaleButtonReleased(GtkWidget* widget, GdkEventButton* event, FullscreenVideoController* controller) +{ + controller->endSeek(); + return FALSE; +} + +static void timeScaleValueChanged(GtkWidget* widget, FullscreenVideoController* controller) +{ + controller->doSeek(); +} + +static void volumeValueChanged(GtkScaleButton *button, gdouble value, FullscreenVideoController* controller) +{ + controller->setVolume(static_cast<float>(value)); +} + +void playerVolumeChangedCallback(GObject *element, GParamSpec *pspec, FullscreenVideoController* controller) +{ + controller->volumeChanged(); +} + +void playerMuteChangedCallback(GObject *element, GParamSpec *pspec, FullscreenVideoController* controller) +{ + controller->muteChanged(); +} + +FullscreenVideoController::FullscreenVideoController() + : m_hudTimeoutId(0) + , m_progressBarUpdateId(0) + , m_seekLock(false) + , m_window(0) + , m_hudWindow(0) +{ +} + +FullscreenVideoController::~FullscreenVideoController() +{ + exitFullscreen(); +} + +void FullscreenVideoController::setMediaElement(HTMLMediaElement* mediaElement) +{ + if (mediaElement == m_mediaElement) + return; + + m_mediaElement = mediaElement; + if (!m_mediaElement) { + // Can't do full-screen, just get out + exitFullscreen(); + } +} + +void FullscreenVideoController::gtkConfigure(GdkEventConfigure* event) +{ + updateHudPosition(); +} + +void FullscreenVideoController::showHud(bool autoHide) +{ + if (!m_hudWindow) + return; + + if (m_hudTimeoutId) { + g_source_remove(m_hudTimeoutId); + m_hudTimeoutId = 0; + } + + // Show the cursor. + GdkWindow* window = gtk_widget_get_window(m_window); + gdk_window_set_cursor(window, 0); + + // Update the progress bar immediately before showing the window. + updateHudProgressBar(); + gtk_widget_show_all(m_hudWindow); + updateHudPosition(); + + // Start periodic updates of the progress bar. + if (!m_progressBarUpdateId) + m_progressBarUpdateId = g_timeout_add(PROGRESS_BAR_UPDATE_INTERVAL, reinterpret_cast<GSourceFunc>(progressBarUpdateCallback), this); + + // Hide the hud in few seconds, if requested. + if (autoHide) + m_hudTimeoutId = g_timeout_add(HUD_AUTO_HIDE_INTERVAL, reinterpret_cast<GSourceFunc>(hideHudCallback), this); +} + +void FullscreenVideoController::hideHud() +{ + if (m_hudTimeoutId) { + g_source_remove(m_hudTimeoutId); + m_hudTimeoutId = 0; + } + + if (!m_hudWindow) + return; + + // Keep the hud visible if a seek is in progress or if the volume + // popup is visible. + GtkWidget* volumePopup = gtk_scale_button_get_popup(GTK_SCALE_BUTTON(m_volumeButton)); + if (m_seekLock || gtk_widget_get_visible(volumePopup)) { + showHud(true); + return; + } + + GdkWindow* window = gtk_widget_get_window(m_window); + GdkCursor* cursor = blankCursor(); + gdk_window_set_cursor(window, cursor); + + gtk_widget_hide(m_hudWindow); + + if (m_progressBarUpdateId) { + g_source_remove(m_progressBarUpdateId); + m_progressBarUpdateId = 0; + } +} + +static gboolean onFullscreenGtkKeyPressEvent(GtkWidget* widget, GdkEventKey* event, FullscreenVideoController* controller) +{ + switch (event->keyval) { + case GDK_Escape: + case 'f': + case 'F': + controller->exitOnUserRequest(); + break; + case GDK_space: + case GDK_Return: + controller->togglePlay(); + break; + case GDK_Up: + // volume up + controller->setVolume(controller->volume() + VOLUME_UP_OFFSET); + break; + case GDK_Down: + // volume down + controller->setVolume(controller->volume() - VOLUME_DOWN_OFFSET); + break; + default: + break; + } + + return TRUE; +} + + +void FullscreenVideoController::enterFullscreen() +{ + if (!m_mediaElement) + return; + + if (m_mediaElement->platformMedia().type != WebCore::PlatformMedia::GStreamerGWorldType) + return; + + m_gstreamerGWorld = m_mediaElement->platformMedia().media.gstreamerGWorld; + if (!m_gstreamerGWorld->enterFullscreen()) + return; + + m_window = reinterpret_cast<GtkWidget*>(m_gstreamerGWorld->platformVideoWindow()->window()); + + GstElement* pipeline = m_gstreamerGWorld->pipeline(); + g_signal_connect(pipeline, "notify::volume", G_CALLBACK(playerVolumeChangedCallback), this); + g_signal_connect(pipeline, "notify::mute", G_CALLBACK(playerMuteChangedCallback), this); + + if (!m_hudWindow) + createHud(); + + // Ensure black background. +#ifdef GTK_API_VERSION_2 + GdkColor color = { 1, 0, 0, 0 }; + gtk_widget_modify_bg(m_window, GTK_STATE_NORMAL, &color); +#else + GdkRGBA color = { 0, 0, 0, 1}; + gtk_widget_override_background_color(m_window, GTK_STATE_FLAG_NORMAL, &color); +#endif + gtk_widget_set_double_buffered(m_window, FALSE); + + g_signal_connect(m_window, "key-press-event", G_CALLBACK(onFullscreenGtkKeyPressEvent), this); + g_signal_connect(m_window, "destroy", G_CALLBACK(onFullscreenGtkDestroy), this); + g_signal_connect(m_window, "notify::is-active", G_CALLBACK(onFullscreenGtkActiveNotification), this); + + gtk_widget_show_all(m_window); + + GdkWindow* window = gtk_widget_get_window(m_window); + GRefPtr<GdkCursor> cursor(adoptGRef(blankCursor())); + gdk_window_set_cursor(window, cursor.get()); + + g_signal_connect(m_window, "motion-notify-event", G_CALLBACK(onFullscreenGtkMotionNotifyEvent), this); + g_signal_connect(m_window, "configure-event", G_CALLBACK(onFullscreenGtkConfigureEvent), this); + + gtk_window_fullscreen(GTK_WINDOW(m_window)); + showHud(true); +} + +void FullscreenVideoController::updateHudPosition() +{ + if (!m_hudWindow) + return; + + // Get the screen rectangle. + GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(m_window)); + GdkWindow* window = gtk_widget_get_window(m_window); + GdkRectangle fullscreenRectangle; + gdk_screen_get_monitor_geometry(screen, gdk_screen_get_monitor_at_window(screen, window), + &fullscreenRectangle); + + // Get the popup window size. + int hudWidth, hudHeight; + gtk_window_get_size(GTK_WINDOW(m_hudWindow), &hudWidth, &hudHeight); + + // Resize the hud to the full width of the screen. + gtk_window_resize(GTK_WINDOW(m_hudWindow), fullscreenRectangle.width, hudHeight); + + // Move the hud to the bottom of the screen. + gtk_window_move(GTK_WINDOW(m_hudWindow), fullscreenRectangle.x, + fullscreenRectangle.height + fullscreenRectangle.y - hudHeight); +} + +void FullscreenVideoController::exitOnUserRequest() +{ + m_mediaElement->exitFullscreen(); +} + +void FullscreenVideoController::exitFullscreen() +{ + if (!m_hudWindow) + return; + + g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkKeyPressEvent), this); + g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkDestroy), this); + g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkMotionNotifyEvent), this); + g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkConfigureEvent), this); + + GstElement* pipeline = m_mediaElement->platformMedia().media.gstreamerGWorld->pipeline(); + g_signal_handlers_disconnect_by_func(pipeline, reinterpret_cast<void*>(playerVolumeChangedCallback), this); + g_signal_handlers_disconnect_by_func(pipeline, reinterpret_cast<void*>(playerMuteChangedCallback), this); + + if (m_hudTimeoutId) { + g_source_remove(m_hudTimeoutId); + m_hudTimeoutId = 0; + } + + if (m_progressBarUpdateId) { + g_source_remove(m_progressBarUpdateId); + m_progressBarUpdateId = 0; + } + + if (m_mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType) + m_mediaElement->platformMedia().media.gstreamerGWorld->exitFullscreen(); + + gtk_widget_hide(m_window); + + gtk_widget_destroy(m_hudWindow); + m_hudWindow = 0; +} + +bool FullscreenVideoController::canPlay() const +{ + return m_mediaElement && m_mediaElement->canPlay(); +} + +void FullscreenVideoController::play() +{ + if (m_mediaElement) + m_mediaElement->play(m_mediaElement->processingUserGesture()); + + playStateChanged(); + showHud(true); +} + +void FullscreenVideoController::pause() +{ + if (m_mediaElement) + m_mediaElement->pause(m_mediaElement->processingUserGesture()); + + playStateChanged(); + showHud(false); +} + +void FullscreenVideoController::playStateChanged() +{ + if (canPlay()) + g_object_set(m_playPauseAction, "tooltip", _("Play"), "icon-name", PLAY_ICON_NAME, NULL); + else + g_object_set(m_playPauseAction, "tooltip", _("Pause"), "icon-name", PAUSE_ICON_NAME, NULL); +} + +void FullscreenVideoController::togglePlay() +{ + if (canPlay()) + play(); + else + pause(); +} + +float FullscreenVideoController::volume() const +{ + return m_mediaElement ? m_mediaElement->volume() : 0; +} + +bool FullscreenVideoController::muted() const +{ + return m_mediaElement ? m_mediaElement->muted() : false; +} + +void FullscreenVideoController::setVolume(float volume) +{ + if (volume < 0.0 || volume > 1.0) + return; + + if (m_mediaElement) { + ExceptionCode ec; + m_mediaElement->setVolume(volume, ec); + } +} + +void FullscreenVideoController::volumeChanged() +{ + g_signal_handler_block(m_volumeButton, m_volumeUpdateId); + gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), volume()); + g_signal_handler_unblock(m_volumeButton, m_volumeUpdateId); +} + +void FullscreenVideoController::muteChanged() +{ + g_signal_handler_block(m_volumeButton, m_volumeUpdateId); + gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), muted() ? 0 : volume()); + g_signal_handler_unblock(m_volumeButton, m_volumeUpdateId); +} + +float FullscreenVideoController::currentTime() const +{ + return m_mediaElement ? m_mediaElement->currentTime() : 0; +} + +void FullscreenVideoController::setCurrentTime(float value) +{ + if (m_mediaElement) { + ExceptionCode ec; + m_mediaElement->setCurrentTime(value, ec); + } +} + +float FullscreenVideoController::duration() const +{ + return m_mediaElement ? m_mediaElement->duration() : 0; +} + +float FullscreenVideoController::percentLoaded() const +{ + return m_mediaElement ? m_mediaElement->percentLoaded() : 0; +} + +void FullscreenVideoController::beginSeek() +{ + m_seekLock = true; + + if (m_mediaElement) + m_mediaElement->beginScrubbing(); +} + +void FullscreenVideoController::doSeek() +{ + if (!m_seekLock) + return; + + setCurrentTime(gtk_range_get_value(GTK_RANGE(m_timeHScale))*duration() / 100); +} + +void FullscreenVideoController::endSeek() +{ + if (m_mediaElement) + m_mediaElement->endScrubbing(); + + m_seekLock = false; +} + +static String timeToString(float time) +{ + if (!isfinite(time)) + time = 0; + int seconds = fabsf(time); + int hours = seconds / (60 * 60); + int minutes = (seconds / 60) % 60; + seconds %= 60; + + if (hours) { + if (hours > 9) + return String::format("%s%02d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds); + return String::format("%s%01d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds); + } + + return String::format("%s%02d:%02d", (time < 0 ? "-" : ""), minutes, seconds); +} + +gboolean FullscreenVideoController::updateHudProgressBar() +{ + float mediaDuration(duration()); + float mediaPosition(currentTime()); + + if (!m_seekLock) { + gdouble value = 0.0; + + if (mediaPosition && mediaDuration) + value = (mediaPosition * 100.0) / mediaDuration; + + GtkAdjustment* adjustment = gtk_range_get_adjustment(GTK_RANGE(m_timeHScale)); + gtk_adjustment_set_value(adjustment, value); + } + + gtk_range_set_fill_level(GTK_RANGE(m_timeHScale), percentLoaded()* 100); + + gchar* label = g_strdup_printf("%s / %s", timeToString(mediaPosition).utf8().data(), + timeToString(mediaDuration).utf8().data()); + gtk_label_set_text(GTK_LABEL(m_timeLabel), label); + g_free(label); + return TRUE; +} + +void FullscreenVideoController::createHud() +{ + m_hudWindow = gtk_window_new(GTK_WINDOW_POPUP); + gtk_window_set_gravity(GTK_WINDOW(m_hudWindow), GDK_GRAVITY_SOUTH_WEST); + gtk_window_set_type_hint(GTK_WINDOW(m_hudWindow), GDK_WINDOW_TYPE_HINT_NORMAL); + + g_signal_connect(m_hudWindow, "motion-notify-event", G_CALLBACK(onFullscreenGtkMotionNotifyEvent), this); + + GtkWidget* hbox = gtk_hbox_new(FALSE, 4); + gtk_container_add(GTK_CONTAINER(m_hudWindow), hbox); + + m_playPauseAction = gtk_action_new("play", _("Play / Pause"), _("Play or pause the media"), PAUSE_ICON_NAME); + g_signal_connect(m_playPauseAction, "activate", G_CALLBACK(togglePlayPauseActivated), this); + + playStateChanged(); + + GtkWidget* item = gtk_action_create_tool_item(m_playPauseAction); + gtk_box_pack_start(GTK_BOX(hbox), item, FALSE, TRUE, 0); + + GtkWidget* label = gtk_label_new(_("Time:")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); + + GtkAdjustment* adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 100.0, 0.1, 1.0, 1.0)); + m_timeHScale = gtk_hscale_new(adjustment); + gtk_scale_set_draw_value(GTK_SCALE(m_timeHScale), FALSE); + gtk_range_set_show_fill_level(GTK_RANGE(m_timeHScale), TRUE); + g_signal_connect(m_timeHScale, "button-press-event", G_CALLBACK(timeScaleButtonPressed), this); + g_signal_connect(m_timeHScale, "button-release-event", G_CALLBACK(timeScaleButtonReleased), this); + m_hscaleUpdateId = g_signal_connect(m_timeHScale, "value-changed", G_CALLBACK(timeScaleValueChanged), this); + + gtk_box_pack_start(GTK_BOX(hbox), m_timeHScale, TRUE, TRUE, 0); + + m_timeLabel = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(hbox), m_timeLabel, FALSE, TRUE, 0); + + // Volume button. + m_volumeButton = gtk_volume_button_new(); + gtk_box_pack_start(GTK_BOX(hbox), m_volumeButton, FALSE, TRUE, 0); + gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), volume()); + m_volumeUpdateId = g_signal_connect(m_volumeButton, "value-changed", G_CALLBACK(volumeValueChanged), this); + + + m_exitFullscreenAction = gtk_action_new("exit", _("Exit Fullscreen"), _("Exit from fullscreen mode"), EXIT_FULLSCREEN_ICON_NAME); + g_signal_connect(m_exitFullscreenAction, "activate", G_CALLBACK(exitFullscreenActivated), this); + g_object_set(m_exitFullscreenAction, "icon-name", EXIT_FULLSCREEN_ICON_NAME, NULL); + item = gtk_action_create_tool_item(m_exitFullscreenAction); + gtk_box_pack_start(GTK_BOX(hbox), item, FALSE, TRUE, 0); + + + m_progressBarUpdateId = g_timeout_add(PROGRESS_BAR_UPDATE_INTERVAL, reinterpret_cast<GSourceFunc>(progressBarUpdateCallback), this); +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h new file mode 100644 index 0000000..d4bbea2 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2010 Igalia S.L + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef FullscreenVideoController_h +#define FullscreenVideoController_h + +#if ENABLE(VIDEO) + +#include "GRefPtr.h" +#include "GStreamerGWorld.h" +#include "HTMLMediaElement.h" +#include <wtf/RefPtr.h> + +class FullscreenVideoController : public Noncopyable { +public: + FullscreenVideoController(); + virtual ~FullscreenVideoController(); + + void setMediaElement(WebCore::HTMLMediaElement*); + WebCore::HTMLMediaElement* mediaElement() const { return m_mediaElement.get(); } + + void gtkConfigure(GdkEventConfigure* event); + + void enterFullscreen(); + void exitFullscreen(); + + void exitOnUserRequest(); + void togglePlay(); + void beginSeek(); + void doSeek(); + void endSeek(); + + void hideHud(); + void showHud(bool); + gboolean updateHudProgressBar(); + + float volume() const; + void setVolume(float); + void volumeChanged(); + void muteChanged(); + +private: + bool canPlay() const; + void play(); + void pause(); + void playStateChanged(); + + bool muted() const; + + float currentTime() const; + void setCurrentTime(float); + + float duration() const; + float percentLoaded() const; + + void createHud(); + void updateHudPosition(); + + RefPtr<WebCore::HTMLMediaElement> m_mediaElement; + RefPtr<WebCore::GStreamerGWorld> m_gstreamerGWorld; + + guint m_hudTimeoutId; + guint m_progressBarUpdateId; + guint m_progressBarFillUpdateId; + guint m_hscaleUpdateId; + guint m_volumeUpdateId; + bool m_seekLock; + GtkWidget* m_window; + GtkWidget* m_hudWindow; + GtkAction* m_playPauseAction; + GtkAction* m_exitFullscreenAction; + GtkWidget* m_timeHScale; + GtkWidget* m_timeLabel; + GtkWidget* m_volumeButton; +}; + +#endif + +#endif // FullscreenVideoController_h diff --git a/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp new file mode 100644 index 0000000..31af243 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp @@ -0,0 +1,359 @@ +/* + * Copyright (C) 2008 Gustavo Noronha Silva + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "InspectorClientGtk.h" + +#include "Frame.h" +#include "InspectorController.h" +#include "NotImplemented.h" +#include "PlatformString.h" +#include "webkitversion.h" +#include "webkitwebinspector.h" +#include "webkitwebinspectorprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <wtf/text/CString.h> + +using namespace WebCore; + +namespace WebKit { + +static void notifyWebViewDestroyed(WebKitWebView* webView, InspectorFrontendClient* inspectorFrontendClient) +{ + inspectorFrontendClient->destroyInspectorWindow(true); +} + +InspectorClient::InspectorClient(WebKitWebView* webView) + : m_inspectedWebView(webView) + , m_frontendPage(0) + , m_frontendClient(0) +{} + +InspectorClient::~InspectorClient() +{ + if (m_frontendClient) { + m_frontendClient->disconnectInspectorClient(); + m_frontendClient = 0; + } +} + +void InspectorClient::inspectorDestroyed() +{ + delete this; +} + +void InspectorClient::openInspectorFrontend(InspectorController* controller) +{ + // This g_object_get will ref the inspector. We're not doing an + // unref if this method succeeds because the inspector object must + // be alive even after the inspected WebView is destroyed - the + // close-window and destroy signals still need to be + // emitted. + WebKitWebInspector* webInspector = 0; + g_object_get(m_inspectedWebView, "web-inspector", &webInspector, NULL); + ASSERT(webInspector); + + WebKitWebView* inspectorWebView = 0; + g_signal_emit_by_name(webInspector, "inspect-web-view", m_inspectedWebView, &inspectorWebView); + + if (!inspectorWebView) { + g_object_unref(webInspector); + return; + } + + webkit_web_inspector_set_web_view(webInspector, inspectorWebView); + + GOwnPtr<gchar> inspectorPath(g_build_filename(inspectorFilesPath(), "inspector.html", NULL)); + GOwnPtr<gchar> inspectorURI(g_filename_to_uri(inspectorPath.get(), 0, 0)); + webkit_web_view_load_uri(inspectorWebView, inspectorURI.get()); + + gtk_widget_show(GTK_WIDGET(inspectorWebView)); + + m_frontendPage = core(inspectorWebView); + m_frontendClient = new InspectorFrontendClient(m_inspectedWebView, inspectorWebView, webInspector, m_frontendPage, this); + m_frontendPage->inspectorController()->setInspectorFrontendClient(m_frontendClient); + + // The inspector must be in it's own PageGroup to avoid deadlock while debugging. + m_frontendPage->setGroupName(""); +} + +void InspectorClient::releaseFrontendPage() +{ + m_frontendPage = 0; +} + +void InspectorClient::highlight(Node*) +{ + hideHighlight(); +} + +void InspectorClient::hideHighlight() +{ + // FIXME: we should be able to only invalidate the actual rects of + // the new and old nodes. We need to track the nodes, and take the + // actual highlight size into account when calculating the damage + // rect. + gtk_widget_queue_draw(GTK_WIDGET(m_inspectedWebView)); +} + +#ifdef HAVE_GSETTINGS +static String toGSettingName(String inspectorSettingName) +{ + if (inspectorSettingName == "resourceTrackingEnabled") + return String("resource-tracking-enabled"); + + if (inspectorSettingName == "xhrMonitor") + return String("xhr-monitor-enabled"); + + if (inspectorSettingName == "frontendSettings") + return String("frontend-settings"); + + if (inspectorSettingName == "debuggerEnabled") + return String("debugger-enabled"); + + if (inspectorSettingName == "profilerEnabled") + return String("profiler-enabled"); + + return inspectorSettingName; +} + +static String truthStringFromVariant(GVariant* variant) +{ + if (g_variant_get_boolean(variant)) + return String("true"); + + return String("false"); +} + +static GVariant* variantFromTruthString(const String& truth) +{ + if (truth == "true") + return g_variant_new_boolean(TRUE); + + return g_variant_new_boolean(FALSE); +} + +static bool shouldIgnoreSetting(const String& key) +{ + // Ignore this setting for now, it doesn't seem to be used for + // anything right now. + if (key == "lastActivePanel") + return true; + + // GSettings considers trying to fetch or set a setting that is + // not backed by a schema as programmer error, and aborts the + // program's execution. We check here to avoid having an unhandled + // setting as a fatal error. + if (key == "resourceTrackingEnabled" || key == "xhrMonitor" + || key == "frontendSettings" || key == "debuggerEnabled" + || key == "profilerEnabled") + return false; + + LOG_VERBOSE(NotYetImplemented, "Unknown key ignored: %s", key.ascii().data()); + return true; +} + +void InspectorClient::populateSetting(const String& key, String* value) +{ + if (shouldIgnoreSetting(key)) + return; + + GSettings* settings = inspectorGSettings(); + if (!settings) + return; + + GRefPtr<GVariant> variant = adoptGRef(g_settings_get_value(settings, toGSettingName(key).utf8().data())); + + if (key == "resourceTrackingEnabled" || key == "xhrMonitor" + || key == "debuggerEnabled" || key == "profilerEnabled") + *value = truthStringFromVariant(variant.get()); + else if (key == "frontendSettings") + *value = String(g_variant_get_string(variant.get(), 0)); +} + +void InspectorClient::storeSetting(const String& key, const String& value) +{ + if (shouldIgnoreSetting(key)) + return; + + GSettings* settings = inspectorGSettings(); + if (!settings) + return; + + GRefPtr<GVariant> variant(0); + + // Set the key with the appropriate type, and also avoid setting + // unknown keys to avoid aborting the execution. + if (key == "resourceTrackingEnabled" || key == "xhrMonitor" + || key == "debuggerEnabled" || key == "profilerEnabled") + variant = adoptGRef(variantFromTruthString(value)); + else if (key == "frontendSettings") + variant = adoptGRef(g_variant_new_string(value.utf8().data())); + + if (!variant) + return; + + g_settings_set_value(settings, toGSettingName(key).utf8().data(), variant.get()); +} +#else +void InspectorClient::populateSetting(const String&, String*) +{ + notImplemented(); +} + +void InspectorClient::storeSetting(const String&, const String&) +{ + notImplemented(); +} +#endif // HAVE_GSETTINGS + +bool InspectorClient::sendMessageToFrontend(const String& message) +{ + return doDispatchMessageOnFrontendPage(m_frontendPage, message); +} + +const char* InspectorClient::inspectorFilesPath() +{ + if (m_inspectorFilesPath) + m_inspectorFilesPath.get(); + + const char* environmentPath = getenv("WEBKIT_INSPECTOR_PATH"); + if (environmentPath && g_file_test(environmentPath, G_FILE_TEST_IS_DIR)) + m_inspectorFilesPath.set(g_strdup(environmentPath)); + else + m_inspectorFilesPath.set(g_build_filename(DATA_DIR, "webkitgtk-"WEBKITGTK_API_VERSION_STRING, "webinspector", NULL)); + + return m_inspectorFilesPath.get(); +} + +InspectorFrontendClient::InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, Page* inspectorPage, InspectorClient* inspectorClient) + : InspectorFrontendClientLocal(core(inspectedWebView)->inspectorController(), inspectorPage) + , m_inspectorWebView(inspectorWebView) + , m_inspectedWebView(inspectedWebView) + , m_webInspector(webInspector) + , m_inspectorClient(inspectorClient) +{ + g_signal_connect(m_inspectorWebView, "destroy", + G_CALLBACK(notifyWebViewDestroyed), (gpointer)this); +} + +InspectorFrontendClient::~InspectorFrontendClient() +{ + if (m_inspectorClient) { + m_inspectorClient->disconnectFrontendClient(); + m_inspectorClient = 0; + } + ASSERT(!m_webInspector); +} + +void InspectorFrontendClient::destroyInspectorWindow(bool notifyInspectorController) +{ + if (!m_webInspector) + return; + WebKitWebInspector* webInspector = m_webInspector; + m_webInspector = 0; + + g_signal_handlers_disconnect_by_func(m_inspectorWebView, (gpointer)notifyWebViewDestroyed, (gpointer)this); + m_inspectorWebView = 0; + + if (notifyInspectorController) + core(m_inspectedWebView)->inspectorController()->disconnectFrontend(); + + if (m_inspectorClient) + m_inspectorClient->releaseFrontendPage(); + + gboolean handled = FALSE; + g_signal_emit_by_name(webInspector, "close-window", &handled); + ASSERT(handled); + + // Please do not use member variables here because InspectorFrontendClient object pointed by 'this' + // has been implicitly deleted by "close-window" function. + + /* we should now dispose our own reference */ + g_object_unref(webInspector); +} + +String InspectorFrontendClient::localizedStringsURL() +{ + GOwnPtr<gchar> stringsPath(g_build_filename(m_inspectorClient->inspectorFilesPath(), "localizedStrings.js", NULL)); + GOwnPtr<gchar> stringsURI(g_filename_to_uri(stringsPath.get(), 0, 0)); + + // FIXME: support l10n of localizedStrings.js + return String::fromUTF8(stringsURI.get()); +} + +String InspectorFrontendClient::hiddenPanels() +{ + notImplemented(); + return String(); +} + +void InspectorFrontendClient::bringToFront() +{ + if (!m_inspectorWebView) + return; + + gboolean handled = FALSE; + g_signal_emit_by_name(m_webInspector, "show-window", &handled); +} + +void InspectorFrontendClient::closeWindow() +{ + destroyInspectorWindow(true); +} + +void InspectorFrontendClient::disconnectFromBackend() +{ + destroyInspectorWindow(false); +} + +void InspectorFrontendClient::attachWindow() +{ + if (!m_inspectorWebView) + return; + + gboolean handled = FALSE; + g_signal_emit_by_name(m_webInspector, "attach-window", &handled); +} + +void InspectorFrontendClient::detachWindow() +{ + if (!m_inspectorWebView) + return; + + gboolean handled = FALSE; + g_signal_emit_by_name(m_webInspector, "detach-window", &handled); +} + +void InspectorFrontendClient::setAttachedWindowHeight(unsigned height) +{ + notImplemented(); +} + +void InspectorFrontendClient::inspectedURLChanged(const String& newURL) +{ + if (!m_inspectorWebView) + return; + + webkit_web_inspector_set_inspected_uri(m_webInspector, newURL.utf8().data()); +} + +} + diff --git a/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h new file mode 100644 index 0000000..08038f6 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2007 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef InspectorClientGtk_h +#define InspectorClientGtk_h + +#include "GOwnPtr.h" +#include "InspectorClient.h" +#include "InspectorFrontendClientLocal.h" +#include "webkitwebview.h" +#include "webkitwebinspector.h" +#include <wtf/Forward.h> + +namespace WebCore { + class Node; + class Page; +} + +namespace WebKit { + + class InspectorFrontendClient; + + class InspectorClient : public WebCore::InspectorClient { + public: + InspectorClient(WebKitWebView* webView); + ~InspectorClient(); + + void disconnectFrontendClient() { m_frontendClient = 0; } + + virtual void inspectorDestroyed(); + + virtual void openInspectorFrontend(WebCore::InspectorController*); + + virtual void highlight(WebCore::Node*); + virtual void hideHighlight(); + + virtual void populateSetting(const WTF::String& key, WTF::String* value); + virtual void storeSetting(const WTF::String& key, const WTF::String& value); + + virtual bool sendMessageToFrontend(const WTF::String&); + + void releaseFrontendPage(); + const char* inspectorFilesPath(); + + private: + WebKitWebView* m_inspectedWebView; + WebCore::Page* m_frontendPage; + InspectorFrontendClient* m_frontendClient; + GOwnPtr<gchar> m_inspectorFilesPath; + }; + + class InspectorFrontendClient : public WebCore::InspectorFrontendClientLocal { + public: + InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, WebCore::Page* inspectorPage, InspectorClient* inspectorClient); + + void disconnectInspectorClient() { m_inspectorClient = 0; } + + void destroyInspectorWindow(bool notifyInspectorController); + + virtual WTF::String localizedStringsURL(); + + virtual WTF::String hiddenPanels(); + + virtual void bringToFront(); + virtual void closeWindow(); + virtual void disconnectFromBackend(); + + virtual void attachWindow(); + virtual void detachWindow(); + + virtual void setAttachedWindowHeight(unsigned height); + + virtual void inspectedURLChanged(const WTF::String& newURL); + + private: + virtual ~InspectorFrontendClient(); + + WebKitWebView* m_inspectorWebView; + WebKitWebView* m_inspectedWebView; + WebKitWebInspector* m_webInspector; + InspectorClient* m_inspectorClient; + }; +} + +#endif diff --git a/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp new file mode 100644 index 0000000..e99fc84 --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com> + * Copyright (C) 2009 Holger Hans Peter Freyther + * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "PasteboardHelperGtk.h" + +#include "DataObjectGtk.h" +#include "FocusController.h" +#include "Frame.h" +#include "webkitwebframe.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <gtk/gtk.h> + +using namespace WebCore; + +namespace WebKit { + +PasteboardHelperGtk::PasteboardHelperGtk() +{ + initializeTargetList(); +} + +PasteboardHelperGtk::~PasteboardHelperGtk() +{ +} + +guint PasteboardHelperGtk::getIdForTargetType(PasteboardTargetType type) +{ + if (type == TargetTypeMarkup) + return WEBKIT_WEB_VIEW_TARGET_INFO_HTML; + if (type == TargetTypeImage) + return WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE; + if (type == TargetTypeURIList) + return WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST; + if (type == TargetTypeNetscapeURL) + return WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL; + + return WEBKIT_WEB_VIEW_TARGET_INFO_TEXT; +} + +bool PasteboardHelperGtk::usePrimarySelectionClipboard(GtkWidget* widget) +{ + return webkit_web_view_use_primary_for_paste(WEBKIT_WEB_VIEW((widget))); +} + +} diff --git a/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h new file mode 100644 index 0000000..d00333c --- /dev/null +++ b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com> + * Copyright (C) 2009 Holger Hans Peter Freyther + * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org> + * All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef PasteboardHelperGtk_h +#define PasteboardHelperGtk_h + +/* + * FIXME: this is for WebCore support and must be removed once + * a better solution is found + */ + +#include "Frame.h" +#include "PasteboardHelper.h" + +using namespace WebCore; + +namespace WebKit { + +class PasteboardHelperGtk : public PasteboardHelper { +public: + PasteboardHelperGtk(); + ~PasteboardHelperGtk(); + virtual guint getIdForTargetType(PasteboardTargetType); + +protected: + virtual bool usePrimarySelectionClipboard(GtkWidget*); +}; + +} + +#endif // PasteboardHelperGtk_h diff --git a/Source/WebKit/gtk/docs/GNUmakefile.am b/Source/WebKit/gtk/docs/GNUmakefile.am new file mode 100644 index 0000000..565f535 --- /dev/null +++ b/Source/WebKit/gtk/docs/GNUmakefile.am @@ -0,0 +1,107 @@ +## Process this file with automake to produce GNUmakefile.in + +# We require automake 1.6 at least. +AUTOMAKE_OPTIONS = 1.6 + +# This is a blank Makefile.am for using gtk-doc. +# Copy this to your project's API docs directory and modify the variables to +# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples +# of using the various options. + +# The name of the module, e.g. 'glib'. +DOC_MODULE=webkitgtk + +# The top-level SGML file. You can change this if you want to. +DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml + +# The directory containing the source code. Relative to $(srcdir). +# gtk-doc will search all .c & .h files beneath here for inline comments +# documenting the functions and macros. +# e.g. DOC_SOURCE_DIR=../../../gtk +DOC_SOURCE_DIR=../webkit + +# Extra options to pass to gtkdoc-scangobj. Not normally needed. +SCANGOBJ_OPTIONS="--type-init-func=g_thread_init(NULL);g_type_init()" + +# Extra options to supply to gtkdoc-scan. +# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" +SCAN_OPTIONS=--deprecated-guards="WEBKIT_DISABLE_DEPRECATED" --ignore-decorators="WEBKIT_API" + +# Extra options to supply to gtkdoc-mkdb. +# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml +MKDB_OPTIONS=--sgml-mode --output-format=xml --source-suffixes=h,c,cpp + +# Extra options to supply to gtkdoc-mktmpl +# e.g. MKTMPL_OPTIONS=--only-section-tmpl +MKTMPL_OPTIONS= + +# Extra options to supply to gtkdoc-fixref. Not normally needed. +# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html +FIXXREF_OPTIONS= + +# Used for dependencies. The docs will be rebuilt if any of these change. +# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h +# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c +HFILE_GLOB=$(top_srcdir)/WebKit/gtk/webkit/*.h +CFILE_GLOB=$(top_srcdir)/WebKit/gtk/webkit/*.cpp + +# Header files to ignore when scanning. +# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h +IGNORE_HFILES=webkitprivate.h + +# Images to copy into HTML directory. +# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png +HTML_IMAGES= + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). +# e.g. content_files=running.sgml building.sgml changes-2.0.sgml +content_files=webkitenvironment.xml + +# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded +# These files must be listed here *and* in content_files +# e.g. expand_content_files=running.sgml +expand_content_files= + +# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. +# Only needed if you are using gtkdoc-scangobj to dynamically query widget +# signals and properties. +# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) +# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) +INCLUDES= \ + -I$(top_srcdir)/WebKit/gtk \ + -I$(top_builddir)/WebKit/gtk \ + $(global_cppflags) \ + $(global_cflags) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/Source/JavaScriptCore \ + -I$(top_srcdir)/Source/JavaScriptCore/ForwardingHeaders \ + -I$(top_srcdir)/Source/JavaScriptCore/parser \ + -I$(top_srcdir)/Source/JavaScriptCore/wtf \ + -I$(top_builddir)/DerivedSources \ + -I$(top_srcdir)/WebCore/platform/network/soup/cache \ + $(GLOBALDEPS_CFLAGS) \ + $(CAIRO_CFLAGS) \ + $(GLIB_CFLAGS) \ + $(GTK_CFLAGS) \ + $(LIBSOUP_CFLAGS) +GTKDOC_LIBS= \ + $(top_builddir)/libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \ + $(GLIB_LIBS) \ + $(GTK_LIBS) \ + $(LIBSOUP_LIBS) + +# This includes the standard gtk-doc make rules, copied by gtkdocize. +include $(top_srcdir)/gtk-doc.make + +# Other files to distribute +# e.g. EXTRA_DIST += version.xml.in +EXTRA_DIST += + +# Files not to distribute +# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types +# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt +#DISTCLEANFILES += + +# Comment this out if you want your docs-status tested during 'make check' +#TESTS = $(GTKDOC_CHECK) + diff --git a/Source/WebKit/gtk/docs/version.xml.in b/Source/WebKit/gtk/docs/version.xml.in new file mode 100644 index 0000000..d78bda9 --- /dev/null +++ b/Source/WebKit/gtk/docs/version.xml.in @@ -0,0 +1 @@ +@VERSION@ diff --git a/Source/WebKit/gtk/docs/webkitenvironment.xml b/Source/WebKit/gtk/docs/webkitenvironment.xml new file mode 100644 index 0000000..03d64b7 --- /dev/null +++ b/Source/WebKit/gtk/docs/webkitenvironment.xml @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<refentry id="webkit-environment"> +<refmeta> +<refentrytitle>Environment</refentrytitle> +<manvolnum>7</manvolnum> +<refmiscinfo>WEBKITGTK Library</refmiscinfo> +</refmeta> + +<refnamediv> +<refname>Environment</refname> +<refpurpose>How does the environment affect applications that use WebKitGTK+</refpurpose> +</refnamediv> + +<refsect2> +<title>Logging</title> + +<para> +You can make WebKitGTK+ log some of what it is doing internally by +using the <literal>WEBKIT_DEBUG</literal> environment variable. It +takes a space-separated list of names, representing the various +aspects of the work the library performs. Notice that most of the +logging is only done in debug builds (that you get when you pass +<literal>--enable-debug</literal> to the <literal>configure</literal> +script). +</para> + +<para> +A list of possible values for the environment variable follows: +</para> + +<variablelist> + <varlistentry> + <term>BackForward</term> + </varlistentry> + <varlistentry> + <term>Editing</term> + </varlistentry> + <varlistentry> + <term>Events</term> + </varlistentry> + <varlistentry> + <term>Frames</term> + </varlistentry> + <varlistentry> + <term>FTP</term> + </varlistentry> + <varlistentry> + <term>History</term> + </varlistentry> + <varlistentry> + <term>IconDatabase</term> + </varlistentry> + <varlistentry> + <term>Loading</term> + </varlistentry> + <varlistentry> + <term>Media</term> + </varlistentry> + <varlistentry> + <term>Network</term> + </varlistentry> + <varlistentry> + <term>NotYetImplemented</term> + </varlistentry> + <varlistentry> + <term>PageCache</term> + </varlistentry> + <varlistentry> + <term>PlatformLeaks</term> + </varlistentry> + <varlistentry> + <term>Plugin</term> + </varlistentry> + <varlistentry> + <term>PopupBlocking</term> + </varlistentry> + <varlistentry> + <term>SpellingAndGrammar</term> + </varlistentry> + <varlistentry> + <term>SQLDatabase</term> + </varlistentry> + <varlistentry> + <term>StorageAPI</term> + </varlistentry> + <varlistentry> + <term>TextConversion</term> + </varlistentry> + <varlistentry> + <term>Threading</term> + </varlistentry> +</variablelist> + +</refsect2> + +</refentry> diff --git a/Source/WebKit/gtk/docs/webkitgtk-docs.sgml b/Source/WebKit/gtk/docs/webkitgtk-docs.sgml new file mode 100644 index 0000000..9a833ea --- /dev/null +++ b/Source/WebKit/gtk/docs/webkitgtk-docs.sgml @@ -0,0 +1,132 @@ +<?xml version="1.0"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [ +<!ENTITY version SYSTEM "version.xml"> +]> +<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude"> + <bookinfo> + <title>WebKitGTK+ Reference Manual</title> + <releaseinfo>for WebKitGTK+ &version;</releaseinfo> + </bookinfo> + + <chapter> + <title>Global functions</title> + <xi:include href="xml/webkit.xml"/> + </chapter> + + <chapter> + <title>Class Overview</title> + <xi:include href="xml/webkitwebview.xml"/> + <xi:include href="xml/webkitwebframe.xml"/> + <xi:include href="xml/webkitwebsettings.xml"/> + <xi:include href="xml/webkitwebbackforwardlist.xml"/> + <xi:include href="xml/webkitwebhistoryitem.xml"/> + <xi:include href="xml/webkitwebnavigationaction.xml"/> + <xi:include href="xml/webkitwebpolicydecision.xml"/> + <xi:include href="xml/webkitgeolocationpolicydecision.xml"/> + <xi:include href="xml/webkitnetworkrequest.xml"/> + <xi:include href="xml/webkitnetworkresponse.xml"/> + <xi:include href="xml/webkitwebinspector.xml"/> + <xi:include href="xml/webkitwebdatabase.xml"/> + <xi:include href="xml/webkitwebdatasource.xml"/> + <xi:include href="xml/webkitwebresource.xml"/> + <xi:include href="xml/webkitdownload.xml"/> + <xi:include href="xml/webkitviewportattributes.xml"/> + <xi:include href="xml/webkithittestresult.xml"/> + <xi:include href="xml/webkitwebplugin.xml"/> + <xi:include href="xml/webkitwebplugindatabase.xml"/> + <xi:include href="xml/webkitsoupauthdialog.xml"/> + <xi:include href="xml/webkitsecurityorigin.xml"/> + <xi:include href="xml/webkitwebwindowfeatures.xml"/> + </chapter> + + <chapter> + <title>Running WebKitGTK+-based programs</title> + <xi:include href="webkitenvironment.xml"/> + </chapter> + + <index id="index-all"> + <title>Index</title> + </index> + <index id="index-deprecated" role="deprecated"> + <title>Index of deprecated symbols</title> + </index> + <index id="index-1.0.1" role="1.0.1"> + <title>Index of new symbols in 1.0.1</title> + </index> + <index id="index-1.0.2" role="1.0.2"> + <title>Index of new symbols in 1.0.2</title> + </index> + <index id="index-1.0.3" role="1.0.3"> + <title>Index of new symbols in 1.0.3</title> + </index> + <index id="index-1.1.1" role="1.1.1"> + <title>Index of new symbols in 1.1.1</title> + </index> + <index id="index-1.1.2" role="1.1.2"> + <title>Index of new symbols in 1.1.2</title> + </index> + <index id="index-1.1.3" role="1.1.3"> + <title>Index of new symbols in 1.1.3</title> + </index> + <index id="index-1.1.4" role="1.1.4"> + <title>Index of new symbols in 1.1.4</title> + </index> + <index id="index-1.1.5" role="1.1.5"> + <title>Index of new symbols in 1.1.5</title> + </index> + <index id="index-1.1.6" role="1.1.6"> + <title>Index of new symbols in 1.1.6</title> + </index> + <index id="index-1.1.7" role="1.1.7"> + <title>Index of new symbols in 1.1.7</title> + </index> + <index id="index-1.1.8" role="1.1.8"> + <title>Index of new symbols in 1.1.8</title> + </index> + <index id="index-1.1.10" role="1.1.10"> + <title>Index of new symbols in 1.1.10</title> + </index> + <index id="index-1.1.11" role="1.1.11"> + <title>Index of new symbols in 1.1.11</title> + </index> + <index id="index-1.1.13" role="1.1.13"> + <title>Index of new symbols in 1.1.13</title> + </index> + <index id="index-1.1.14" role="1.1.14"> + <title>Index of new symbols in 1.1.14</title> + </index> + <index id="index-1.1.15" role="1.1.15"> + <title>Index of new symbols in 1.1.15</title> + </index> + <index id="index-1.1.16" role="1.1.16"> + <title>Index of new symbols in 1.1.16</title> + </index> + <index id="index-1.1.17" role="1.1.17"> + <title>Index of new symbols in 1.1.17</title> + </index> + <index id="index-1.1.18" role="1.1.18"> + <title>Index of new symbols in 1.1.18</title> + </index> + <index id="index-1.1.20" role="1.1.20"> + <title>Index of new symbols in 1.1.20</title> + </index> + <index id="index-1.1.23" role="1.1.23"> + <title>Index of new symbols in 1.1.23</title> + </index> + <index id="index-1.3.1" role="1.3.1"> + <title>Index of new symbols in 1.3.1</title> + </index> + <index id="index-1.3.2" role="1.3.2"> + <title>Index of new symbols in 1.3.2</title> + </index> + <index id="index-1.3.3" role="1.3.3"> + <title>Index of new symbols in 1.3.3</title> + </index> + <index id="index-1.3.4" role="1.3.4"> + <title>Index of new symbols in 1.3.4</title> + </index> + <index id="index-1.3.8" role="1.3.8"> + <title>Index of new symbols in 1.3.8</title> + </index> +</book> diff --git a/Source/WebKit/gtk/docs/webkitgtk-overrides.txt b/Source/WebKit/gtk/docs/webkitgtk-overrides.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Source/WebKit/gtk/docs/webkitgtk-overrides.txt diff --git a/Source/WebKit/gtk/docs/webkitgtk-sections.txt b/Source/WebKit/gtk/docs/webkitgtk-sections.txt new file mode 100644 index 0000000..2759e2b --- /dev/null +++ b/Source/WebKit/gtk/docs/webkitgtk-sections.txt @@ -0,0 +1,705 @@ +<SECTION> +<FILE>webkitwebsettings</FILE> +<TITLE>WebKitWebSettings</TITLE> +WebKitEditingBehavior +WebKitWebSettings +webkit_web_settings_copy +webkit_web_settings_new +webkit_web_settings_get_user_agent +<SUBSECTION Standard> +WEBKIT_WEB_SETTINGS +WEBKIT_IS_WEB_SETTINGS +WEBKIT_TYPE_WEB_SETTINGS +WEBKIT_WEB_SETTINGS_CLASS +WEBKIT_IS_WEB_SETTINGS_CLASS +WEBKIT_WEB_SETTINGS_GET_CLASS +<SUBSECTION Private> +webkit_web_settings_get_type +WebKitWebSettingsPrivate +WebKitWebSettings +WebKitWebSettingsClass +</SECTION> + +<SECTION> +<FILE>webkitwebbackforwardlist</FILE> +<TITLE>WebKitWebBackForwardList</TITLE> +WebKitWebBackForwardList +webkit_web_back_forward_list_add_item +webkit_web_back_forward_list_clear +webkit_web_back_forward_list_contains_item +webkit_web_back_forward_list_get_back_item +webkit_web_back_forward_list_get_back_length +webkit_web_back_forward_list_get_back_list_with_limit +webkit_web_back_forward_list_get_current_item +webkit_web_back_forward_list_get_forward_item +webkit_web_back_forward_list_get_forward_length +webkit_web_back_forward_list_get_forward_list_with_limit +webkit_web_back_forward_list_get_limit +webkit_web_back_forward_list_get_nth_item +webkit_web_back_forward_list_go_back +webkit_web_back_forward_list_go_forward +webkit_web_back_forward_list_go_to_item +webkit_web_back_forward_list_new_with_web_view +webkit_web_back_forward_list_set_limit +<SUBSECTION Standard> +WEBKIT_WEB_BACK_FORWARD_LIST +WEBKIT_IS_WEB_BACK_FORWARD_LIST +WEBKIT_TYPE_WEB_BACK_FORWARD_LIST +WEBKIT_WEB_BACK_FORWARD_LIST_CLASS +WEBKIT_IS_WEB_BACK_FORWARD_LIST_CLASS +WEBKIT_WEB_BACK_FORWARD_LIST_GET_CLASS +<SUBSECTION Private> +WebKitWebBackForwardListPrivate +webkit_web_back_forward_list_get_type +WebKitWebBackForwardList +WebKitWebBackForwardListClass +</SECTION> + +<SECTION> +<FILE>webkitwebhistoryitem</FILE> +<TITLE>WebKitWebHistoryItem</TITLE> +WebKitWebHistoryItem +webkit_web_history_item_copy +webkit_web_history_item_get_alternate_title +webkit_web_history_item_get_last_visited_time +webkit_web_history_item_get_original_uri +webkit_web_history_item_get_title +webkit_web_history_item_get_uri +webkit_web_history_item_new +webkit_web_history_item_new_with_data +webkit_web_history_item_set_alternate_title +<SUBSECTION Standard> +WEBKIT_WEB_HISTORY_ITEM +WEBKIT_IS_WEB_HISTORY_ITEM +WEBKIT_TYPE_WEB_HISTORY_ITEM +WEBKIT_WEB_HISTORY_ITEM_CLASS +WEBKIT_IS_WEB_HISTORY_ITEM_CLASS +WEBKIT_WEB_HISTORY_ITEM_GET_CLASS +<SUBSECTION Private> +webkit_web_history_item_get_type +WebKitWebHistoryItemPrivate +WebKitWebHistoryItem +WebKitWebHistoryItemClass +</SECTION> + +<SECTION> +<FILE>webkitwebframe</FILE> +<TITLE>WebKitWebFrame</TITLE> +WebKitLoadStatus +WebKitWebFrame +webkit_web_frame_find_frame +webkit_web_frame_get_data_source +webkit_web_frame_get_global_context +webkit_web_frame_get_horizontal_scrollbar_policy +webkit_web_frame_get_load_status +webkit_web_frame_get_name +webkit_web_frame_get_network_response +webkit_web_frame_get_parent +webkit_web_frame_get_provisional_data_source +webkit_web_frame_get_security_origin +webkit_web_frame_get_title +webkit_web_frame_get_uri +webkit_web_frame_get_vertical_scrollbar_policy +webkit_web_frame_get_web_view +webkit_web_frame_load_alternate_string +webkit_web_frame_load_request +webkit_web_frame_load_string +webkit_web_frame_load_uri +webkit_web_frame_new +webkit_web_frame_print +webkit_web_frame_print_full +webkit_web_frame_reload +webkit_web_frame_stop_loading +<SUBSECTION Standard> +WEBKIT_WEB_FRAME +WEBKIT_IS_WEB_FRAME +WEBKIT_TYPE_WEB_FRAME +WEBKIT_WEB_FRAME_CLASS +WEBKIT_IS_WEB_FRAME_CLASS +WEBKIT_WEB_FRAME_GET_CLASS +<SUBSECTION Private> +WEBKIT_WEB_FRAME_GET_PRIVATE +WebKitWebFramePrivate +webkit_web_frame_get_type +WebKitWebFrame +WebKitWebFrameClass +</SECTION> + +<SECTION> +<FILE>webkitdownload</FILE> +WebKitDownloadError +WebKitDownloadStatus +<TITLE>WebKitDownload</TITLE> +WebKitDownload +webkit_download_cancel +webkit_download_error_get_type +webkit_download_get_current_size +webkit_download_get_destination_uri +webkit_download_get_elapsed_time +webkit_download_get_network_request +webkit_download_get_network_response +webkit_download_get_progress +webkit_download_get_status +webkit_download_get_suggested_filename +webkit_download_get_total_size +webkit_download_get_uri +webkit_download_new +webkit_download_set_destination_uri +webkit_download_start +webkit_download_status_get_type +<SUBSECTION Standard> +WEBKIT_DOWNLOAD +WEBKIT_DOWNLOAD_CLASS +WEBKIT_DOWNLOAD_GET_CLASS +WEBKIT_IS_DOWNLOAD +WEBKIT_IS_DOWNLOAD_CLASS +WEBKIT_TYPE_DOWNLOAD +WEBKIT_TYPE_DOWNLOAD_ERROR +WEBKIT_TYPE_DOWNLOAD_STATUS +<SUBSECTION Private> +webkit_download_get_type +WebKitDownload +WebKitDownloadClass +WebKitDownloadPrivate +</SECTION> + +<SECTION> +<FILE>webkitsecurityorigin</FILE> +<TITLE>WebKitSecurityOrigin</TITLE> +WebKitSecurityOrigin +webkit_security_origin_get_all_web_databases +webkit_security_origin_get_host +webkit_security_origin_get_port +webkit_security_origin_get_protocol +webkit_security_origin_get_type +webkit_security_origin_get_web_database_quota +webkit_security_origin_get_web_database_usage +webkit_security_origin_set_web_database_quota +<SUBSECTION Standard> +WEBKIT_SECURITY_ORIGIN +WEBKIT_SECURITY_ORIGIN_CLASS +WEBKIT_SECURITY_ORIGIN_GET_CLASS +WEBKIT_IS_SECURITY_ORIGIN +WEBKIT_IS_SECURITY_ORIGIN_CLASS +WEBKIT_TYPE_SECURITY_ORIGIN +<SUBSECTION Private> +WebKitSecurityOrigin +WebKitSecurityOriginClass +WebKitSecurityOriginPrivate +</SECTION> + +<SECTION> +<FILE>webkithittestresult</FILE> +<TITLE>WebKitHitTestResult</TITLE> +WebKitHitTestResult +WebKitHitTestResultContext +<SUBSECTION Standard> +WEBKIT_HIT_TEST_RESULT +WEBKIT_HIT_TEST_RESULT_CLASS +WEBKIT_HIT_TEST_RESULT_GET_CLASS +WEBKIT_IS_HIT_TEST_RESULT +WEBKIT_IS_HIT_TEST_RESULT_CLASS +WEBKIT_TYPE_HIT_TEST_RESULT +<SUBSECTION Private> +WebKitHitTestResult +WebKitHitTestResultClass +WebKitHitTestResultContext +WebKitHitTestResultPrivate +webkit_hit_test_result_get_type +</SECTION> + +<SECTION> +<FILE>webkitwebdatasource</FILE> +<TITLE>WebKitWebDataSource</TITLE> +WebKitWebDataSource +webkit_web_data_source_get_data +webkit_web_data_source_get_encoding +webkit_web_data_source_get_initial_request +webkit_web_data_source_get_main_resource +webkit_web_data_source_get_request +webkit_web_data_source_get_subresources +webkit_web_data_source_get_unreachable_uri +webkit_web_data_source_get_web_frame +webkit_web_data_source_is_loading +webkit_web_data_source_new +<SUBSECTION Standard> +WEBKIT_IS_WEB_DATA_SOURCE +WEBKIT_IS_WEB_DATA_SOURCE_CLASS +WEBKIT_TYPE_WEB_DATA_SOURCE +WEBKIT_WEB_DATA_SOURCE +WEBKIT_WEB_DATA_SOURCE_CLASS +WEBKIT_WEB_DATA_SOURCE_GET_CLASS +<SUBSECTION Private> +WebKitWebDataSource +WebKitWebDataSourceClass +WebKitWebDataSourcePrivate +webkit_web_data_source_new_with_request +webkit_web_data_source_get_type +</SECTION> + +<SECTION> +<FILE>webkitwebdatabase</FILE> +<TITLE>WebKitWebDatabase</TITLE> +WebKitWebDatabase +webkit_web_database_get_display_name +webkit_web_database_get_expected_size +webkit_web_database_get_filename +webkit_web_database_get_name +webkit_web_database_get_security_origin +webkit_web_database_get_size +webkit_web_database_remove +<SUBSECTION Standard> +WEBKIT_IS_WEB_DATABASE +WEBKIT_IS_WEB_DATABASE_CLASS +WEBKIT_TYPE_WEB_DATABASE +WEBKIT_WEB_DATABASE +WEBKIT_WEB_DATABASE_CLASS +WEBKIT_WEB_DATABASE_GET_CLASS +<SUBSECTION Private> +WebKitWebDatabase +WebKitWebDatabaseClass +WebKitWebDatabasePrivate +webkit_web_database_get_type +</SECTION> + +<SECTION> +<FILE>webkitsoupauthdialog</FILE> +<TITLE>WebKitSoupAuthDialog</TITLE> +WebKitSoupAuthDialog +<SUBSECTION Standard> +WEBKIT_IS_SOUP_AUTH_DIALOG +WEBKIT_IS_SOUP_AUTH_DIALOG_CLASS +WEBKIT_SOUP_AUTH_DIALOG +WEBKIT_SOUP_AUTH_DIALOG_CLASS +WEBKIT_SOUP_AUTH_DIALOG_GET_CLASS +WEBKIT_TYPE_SOUP_AUTH_DIALOG +<SUBSECTION Private> +webkit_soup_auth_dialog_get_type +WebKitSoupAuthDialog +WebKitSoupAuthDialogClass +</SECTION> + +<SECTION> +<FILE>webkitwebinspector</FILE> +<TITLE>WebKitWebInspector</TITLE> +WebKitWebInspector +webkit_web_inspector_get_inspected_uri +webkit_web_inspector_get_web_view +webkit_web_inspector_inspect_coordinates +webkit_web_inspector_show +webkit_web_inspector_close +<SUBSECTION Standard> +WEBKIT_WEB_INSPECTOR +WEBKIT_IS_WEB_INSPECTOR +WEBKIT_TYPE_WEB_INSPECTOR +WEBKIT_WEB_INSPECTOR_CLASS +WEBKIT_IS_WEB_INSPECTOR_CLASS +WEBKIT_WEB_INSPECTOR_GET_CLASS +<SUBSECTION Private> +webkit_web_inspector_get_type +WebKitWebInspectorPrivate +WebKitWebInspector +WebKitWebInspectorClass +</SECTION> + +<SECTION> +<FILE>webkitwebnavigationaction</FILE> +<TITLE>WebKitWebNavigationAction</TITLE> +WebKitWebNavigationAction +WebKitWebNavigationReason +webkit_web_navigation_action_get_button +webkit_web_navigation_action_get_modifier_state +webkit_web_navigation_action_get_original_uri +webkit_web_navigation_action_get_reason +webkit_web_navigation_action_get_target_frame +webkit_web_navigation_action_get_type +webkit_web_navigation_action_set_original_uri +webkit_web_navigation_action_set_reason +webkit_web_navigation_reason_get_type +<SUBSECTION Standard> +WEBKIT_IS_WEB_NAVIGATION_ACTION +WEBKIT_IS_WEB_NAVIGATION_ACTION_CLASS +WEBKIT_TYPE_WEB_NAVIGATION_ACTION +WEBKIT_TYPE_WEB_NAVIGATION_REASON +WEBKIT_WEB_NAVIGATION_ACTION +WEBKIT_WEB_NAVIGATION_ACTION_CLASS +WEBKIT_WEB_NAVIGATION_ACTION_GET_CLASS +<SUBSECTION Private> +WebKitWebNavigationAction +WebKitWebNavigationActionClass +WebKitWebNavigationActionPrivate +</SECTION> + +<SECTION> +<FILE>webkitwebpolicydecision</FILE> +<TITLE>WebKitWebPolicyDecision</TITLE> +WebKitWebPolicyDecision +webkit_web_policy_decision_download +webkit_web_policy_decision_get_type +webkit_web_policy_decision_ignore +webkit_web_policy_decision_use +<SUBSECTION Standard> +WEBKIT_IS_WEB_POLICY_DECISION +WEBKIT_IS_WEB_POLICY_DECISION_CLASS +WEBKIT_TYPE_WEB_POLICY_DECISION +WEBKIT_WEB_POLICY_DECISION +WEBKIT_WEB_POLICY_DECISION_CLASS +WEBKIT_WEB_POLICY_DECISION_GET_CLASS +<SUBSECTION Private> +WebKitWebPolicyDecision +WebKitWebPolicyDecisionClass +WebKitWebPolicyDecisionPrivate +</SECTION> + +<SECTION> +<FILE>webkitgeolocationpolicydecision</FILE> +<TITLE>WebKitGeolocationPolicyDecision</TITLE> +WebKitGeolocationPolicyDecision +webkit_geolocation_policy_allow +webkit_geolocation_policy_deny +webkit_geolocation_policy_decision_get_type +<SUBSECTION Standard> +WEBKIT_IS_GEOLOCATION_POLICY_DECISION +WEBKIT_IS_GEOLOCATION_POLICY_DECISION_CLASS +WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION +WEBKIT_GEOLOCATION_POLICY_DECISION +WEBKIT_GEOLOCATION_POLICY_DECISION_CLASS +WEBKIT_GEOLOCATION_POLICY_DECISION_GET_CLASS +<SUBSECTION Private> +WebKitGeolocationPolicyDecision +WebKitGeolocationPolicyDecisionClass +WebKitGeolocationPolicyDecisionPrivate +</SECTION> + +<SECTION> +<FILE>webkitnetworkrequest</FILE> +<TITLE>WebKitNetworkRequest</TITLE> +WebKitNetworkRequest +webkit_network_request_new +webkit_network_request_get_uri +webkit_network_request_get_message +webkit_network_request_set_uri +<SUBSECTION Standard> +WEBKIT_NETWORK_REQUEST +WEBKIT_IS_NETWORK_REQUEST +WEBKIT_TYPE_NETWORK_REQUEST +WEBKIT_NETWORK_REQUEST_CLASS +WEBKIT_IS_NETWORK_REQUEST_CLASS +WEBKIT_NETWORK_REQUEST_GET_CLASS +<SUBSECTION Private> +webkit_network_request_get_type +WebKitNetworkRequestPrivate +WebKitNetworkRequest +WebKitNetworkRequestClass +</SECTION> + +<SECTION> +<FILE>webkitnetworkresponse</FILE> +<TITLE>WebKitNetworkResponse</TITLE> +WebKitNetworkResponse +webkit_network_response_get_uri +webkit_network_response_get_message +webkit_network_response_set_uri +<SUBSECTION Standard> +WEBKIT_NETWORK_RESPONSE +WEBKIT_IS_NETWORK_RESPONSE +WEBKIT_TYPE_NETWORK_RESPONSE +WEBKIT_NETWORK_RESPONSE_CLASS +WEBKIT_IS_NETWORK_RESPONSE_CLASS +WEBKIT_NETWORK_RESPONSE_GET_CLASS +<SUBSECTION Private> +webkit_network_response_get_type +webkit_network_response_new +WebKitNetworkResponsePrivate +WebKitNetworkResponse +WebKitNetworkResponseClass +</SECTION> + +<SECTION> +<FILE>webkitwebview</FILE> +WebKitNavigationResponse +WebKitWebViewTargetInfo +WebKitWebViewViewMode +<TITLE>WebKitWebView</TITLE> +WebKitWebView +webkit_web_view_can_copy_clipboard +webkit_web_view_can_cut_clipboard +webkit_web_view_can_go_back +webkit_web_view_can_go_back_or_forward +webkit_web_view_can_go_forward +webkit_web_view_can_paste_clipboard +webkit_web_view_can_redo +webkit_web_view_can_show_mime_type +webkit_web_view_can_undo +webkit_web_view_copy_clipboard +webkit_web_view_cut_clipboard +webkit_web_view_delete_selection +webkit_web_view_execute_script +webkit_web_view_get_back_forward_list +webkit_web_view_get_copy_target_list +webkit_web_view_get_custom_encoding +webkit_web_view_get_dom_document +webkit_web_view_get_editable +webkit_web_view_get_encoding +webkit_web_view_get_focused_frame +webkit_web_view_get_full_content_zoom +webkit_web_view_get_hit_test_result +webkit_web_view_get_icon_uri +webkit_web_view_get_inspector +webkit_web_view_get_load_status +webkit_web_view_get_main_frame +webkit_web_view_get_paste_target_list +webkit_web_view_get_progress +webkit_web_view_get_settings +webkit_web_view_get_title +webkit_web_view_get_transparent +webkit_web_view_get_uri +webkit_web_view_get_view_mode +webkit_web_view_get_view_source_mode +webkit_web_view_get_viewport_attributes +webkit_web_view_get_zoom_level +webkit_web_view_go_back +webkit_web_view_go_back_or_forward +webkit_web_view_go_forward +webkit_web_view_go_to_back_forward_item +webkit_web_view_has_selection +webkit_web_view_load_html_string +webkit_web_view_load_request +webkit_web_view_load_string +webkit_web_view_load_uri +webkit_web_view_mark_text_matches +webkit_web_view_move_cursor +webkit_web_view_new +webkit_web_view_open +webkit_web_view_paste_clipboard +webkit_web_view_redo +webkit_web_view_reload +webkit_web_view_reload_bypass_cache +webkit_web_view_search_text +webkit_web_view_select_all +webkit_web_view_set_custom_encoding +webkit_web_view_set_editable +webkit_web_view_set_full_content_zoom +webkit_web_view_set_highlight_text_matches +webkit_web_view_set_maintains_back_forward_list +webkit_web_view_set_settings +webkit_web_view_set_transparent +webkit_web_view_set_view_mode +webkit_web_view_set_view_source_mode +webkit_web_view_set_zoom_level +webkit_web_view_stop_loading +webkit_web_view_target_info_get_type +webkit_web_view_undo +webkit_web_view_unmark_text_matches +webkit_web_view_zoom_in +webkit_web_view_zoom_out +webkit_web_view_get_window_features +<SUBSECTION Standard> +WEBKIT_WEB_VIEW +WEBKIT_IS_WEB_VIEW +WEBKIT_TYPE_WEB_VIEW +WEBKIT_WEB_VIEW_CLASS +WEBKIT_IS_WEB_VIEW_CLASS +WEBKIT_WEB_VIEW_GET_CLASS +<SUBSECTION Private> +webkit_web_view_set_window_features +webkit_web_view_get_type +WebKitWebViewPrivate +WebKitWebView +WebKitWebViewClass +WEBKIT_WEB_VIEW_GET_PRIVATE +</SECTION> + +<SECTION> +<FILE>webkitwebwindowfeatures</FILE> +<TITLE>WebKitWebWindowFeatures</TITLE> +WebKitWebWindowFeatures +webkit_web_window_features_equal +webkit_web_window_features_new +<SUBSECTION Standard> +WEBKIT_IS_WEB_WINDOW_FEATURES +WEBKIT_IS_WEB_WINDOW_FEATURES_CLASS +WEBKIT_TYPE_WEB_WINDOW_FEATURES +WEBKIT_WEB_WINDOW_FEATURES +WEBKIT_WEB_WINDOW_FEATURES_CLASS +WEBKIT_WEB_WINDOW_FEATURES_GET_CLASS +<SUBSECTION Private> +webkit_web_window_features_get_type +WebKitWebWindowFeatures +WebKitWebWindowFeaturesClass +WebKitWebWindowFeaturesPrivate +</SECTION> + +<SECTION> +<FILE>webkit</FILE> +<TITLE>Global functions</TITLE> +webkit_init +webkit_get_default_session +webkit_get_default_web_database_quota +webkit_get_web_database_directory_path +webkit_get_web_plugin_database +webkit_remove_all_web_databases +webkit_set_default_web_database_quota +webkit_set_web_database_directory_path +<SUBSECTION CacheModel> +WebKitCacheModel +webkit_get_cache_model +webkit_set_cache_model +</SUBSECTION> +</SECTION> + +<SECTION> +<FILE>webkitwebresource</FILE> +<TITLE>WebKitWebResource</TITLE> +WebKitWebResource +webkit_web_resource_get_data +webkit_web_resource_get_encoding +webkit_web_resource_get_frame_name +webkit_web_resource_get_mime_type +webkit_web_resource_get_type +webkit_web_resource_get_uri +webkit_web_resource_new +<SUBSECTION Standard> +WEBKIT_WEB_RESOURCE +WEBKIT_IS_WEB_RESOURCE +WEBKIT_TYPE_WEB_RESOURCE +WEBKIT_WEB_RESOURCE_CLASS +WEBKIT_IS_WEB_RESOURCE_CLASS +WEBKIT_WEB_RESOURCE_GET_CLASS +<SUBSECTION Private> +webkit_web_resource_get_type +webkit_web_resource_new +WebKitWebResourcePrivate +WebKitWebResource +WebKitWebResourceClass +</SECTION> + +<SECTION> +<FILE>webkitviewportattributes</FILE> +<TITLE>WebKitViewportAttributes</TITLE> +webkit_viewport_attributes_recompute +<SUBSECTION Standard> +WEBKIT_IS_VIEWPORT_ATTRIBUTES +WEBKIT_IS_VIEWPORT_ATTRIBUTES_CLASS +WEBKIT_TYPE_VIEWPORT_ATTRIBUTES +WEBKIT_VIEWPORT_ATTRIBUTES +WEBKIT_VIEWPORT_ATTRIBUTES_CLASS +WEBKIT_VIEWPORT_ATTRIBUTES_GET_CLASS +<SUBSECTION Private> +webkit_viewport_attributes_get_type +WebKitViewportAttributes +WebKitViewportAttributesClass +WebKitViewportAttributesPrivate +</SECTION> + +<SECTION> +<FILE>webkitwebplugin</FILE> +<TITLE>WebKitWebPlugin</TITLE> +WebKitWebPluginMIMEType +webkit_web_plugin_get_description +webkit_web_plugin_get_enabled +webkit_web_plugin_get_mimetypes +webkit_web_plugin_get_name +webkit_web_plugin_set_enabled +<SUBSECTION Standard> +WEBKIT_IS_WEB_PLUGIN +WEBKIT_IS_WEB_PLUGIN_CLASS +WEBKIT_TYPE_WEB_PLUGIN +WEBKIT_WEB_PLUGIN +WEBKIT_WEB_PLUGIN_CLASS +WEBKIT_WEB_PLUGIN_GET_CLASS +<SUBSECTION Private> +webkit_web_plugin_get_type +WebKitWebPlugin +WebKitWebPluginClass +WebKitWebPluginPrivate +</SECTION> + +<SECTION> +<FILE>webkitwebplugindatabase</FILE> +<TITLE>WebKitWebPluginDatabase</TITLE> +webkit_web_plugin_database_get_plugin_for_mimetype +webkit_web_plugin_database_get_plugins +webkit_web_plugin_database_new +webkit_web_plugin_database_plugins_list_free +webkit_web_plugin_database_refresh +<SUBSECTION Standard> +WEBKIT_IS_WEB_PLUGIN_DATABASE +WEBKIT_IS_WEB_PLUGIN_DATABASE_CLASS +WEBKIT_TYPE_WEB_PLUGIN_DATABASE +WEBKIT_WEB_PLUGIN_DATABASE +WEBKIT_WEB_PLUGIN_DATABASE_CLASS +WEBKIT_WEB_PLUGIN_DATABASE_GET_CLASS +<SUBSECTION Private> +WebKitWebPluginDatabase +WebKitWebPluginDatabaseClass +WebKitWebPluginDatabasePrivate +webkit_web_plugin_database_get_type +</SECTION> + +<SECTION> +<FILE>soup-cache</FILE> +<TITLE>WebKitSoupCache</TITLE> +webkit_soup_cache_new +webkit_soup_cache_flush +webkit_soup_cache_clear +webkit_soup_cache_dump +webkit_soup_cache_load +webkit_soup_cache_set_max_size +webkit_soup_cache_get_max_size +<SUBSECTION Standard> +WEBKIT_IS_SOUP_CACHE +WEBKIT_IS_SOUP_CACHE_CLASS +WEBKIT_TYPE_SOUP_CACHE +WEBKIT_SOUP_CACHE +WEBKIT_SOUP_CACHE_CLASS +WEBKIT_SOUP_CACHE_GET_CLASS +<SUBSECTION Private> +webkit_soup_cache_get_type +WebKitSoupCachePrivate +WebKitSoupCache +WebKitSoupCacheClass +</SECTION> + +<SECTION> +<FILE>webkitprivate</FILE> +getViewFromFrame +kit +WEBKIT_PARAM_READABLE +WEBKIT_PARAM_READWRITE +webkit_web_frame_init_with_web_view +webkit_web_history_item_new_with_core_item +webkit_web_inspector_set_inspector_client +webkit_web_inspector_set_web_view +webkit_web_inspector_set_inspected_uri +</SECTION> + +<SECTION> +<FILE>webkiterror</FILE> +WEBKIT_NETWORK_ERROR +WEBKIT_PLUGIN_ERROR +WEBKIT_POLICY_ERROR +WebKitNetworkError +WebKitPluginError +WebKitPolicyError +webkit_network_error_quark +webkit_plugin_error_quark +webkit_policy_error_quark +</SECTION> + +<SECTION> +<FILE>webkitdefines</FILE> +WEBKIT_API +webkit_navigation_response_get_type +WEBKIT_OBSOLETE_API +WEBKIT_CHECK_VERSION +WEBKIT_MAJOR_VERSION +WEBKIT_MICRO_VERSION +WEBKIT_MINOR_VERSION +WEBKIT_TYPE_NAVIGATION_RESPONSE +WEBKIT_TYPE_WEB_VIEW_TARGET_INFO +webkit_check_version +webkit_major_version +webkit_micro_version +webkit_minor_version +</SECTION> diff --git a/Source/WebKit/gtk/docs/webkitgtk.types b/Source/WebKit/gtk/docs/webkitgtk.types new file mode 100644 index 0000000..23f3382 --- /dev/null +++ b/Source/WebKit/gtk/docs/webkitgtk.types @@ -0,0 +1,13 @@ +#include <webkit/webkit.h> + +webkit_download_get_type +webkit_navigation_response_get_type +webkit_network_request_get_type +webkit_web_back_forward_list_get_type +webkit_web_history_item_get_type +webkit_web_inspector_get_type +webkit_web_settings_get_type +webkit_web_view_get_type +webkit_web_view_target_info_get_type +webkit_web_window_features_get_type + diff --git a/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h b/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h new file mode 100644 index 0000000..afbed49 --- /dev/null +++ b/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2008, 2009 Luke Kenneth Casson Leighton <lkcl@lkcl.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef ConvertToGCharPrivate_h +#define ConvertToGCharPrivate_h + +#include "KURL.h" +#include "PlatformString.h" +#include <wtf/text/CString.h> +#include <wtf/text/AtomicString.h> + +inline gchar* copyAsGchar(WTF::String const& s) +{ + return g_strdup(s.utf8().data()); +} + +inline gchar* copyAsGchar(WebCore::KURL const& s) +{ + return copyAsGchar(s.string()); +} + +inline gchar* copyAsGchar(const JSC::UString& s) +{ + return g_strdup(s.UTF8String().c_str()); +} + +inline gchar* copyAsGchar(WTF::AtomicString const& s) +{ + return g_strdup(s.string().utf8().data()); +} + +#endif /* ConvertToGCharPrivate_h*/ diff --git a/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in b/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in new file mode 100644 index 0000000..17063f4 --- /dev/null +++ b/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in @@ -0,0 +1,32 @@ +<schemalist> + <schema id="org.webkitgtk-@WEBKITGTK_API_VERSION@" path="/system/webkitgtk/"> + <child schema="org.webkitgtk-@WEBKITGTK_API_VERSION@.inspector" name="inspector"/> + </schema> + <schema id="org.webkitgtk-@WEBKITGTK_API_VERSION@.inspector" path="/system/webkitgtk/inspector/"> + <key name="resource-tracking-enabled" type="b"> + <default>false</default> + <summary>Resource Tracking Enabled</summary> + <description>Whether the Resource Tracking panel is always enabled.</description> + </key> + <key name="xhr-monitor-enabled" type="b"> + <default>false</default> + <summary>XHR Monitor Enabled</summary> + <description>Whether the XHR monitor is always enabled.</description> + </key> + <key name="debugger-enabled" type="b"> + <default>false</default> + <summary>Debugger Enabled</summary> + <description>Whether the debugger is always enabled.</description> + </key> + <key name="profiler-enabled" type="b"> + <default>false</default> + <summary>Profiler Enabled</summary> + <description>Whether the profiler is always enabled.</description> + </key> + <key name="frontend-settings" type="s"> + <default>''</default> + <summary>Misc Inspector Frontend Settings</summary> + <description>Miscelaneous Settings managed by the Inspector Frontend</description> + </key> + </schema> +</schemalist> diff --git a/Source/WebKit/gtk/po/ChangeLog b/Source/WebKit/gtk/po/ChangeLog new file mode 100644 index 0000000..d65468e --- /dev/null +++ b/Source/WebKit/gtk/po/ChangeLog @@ -0,0 +1,494 @@ +2011-01-16 Adam Barth <abarth@webkit.org> + + Rubber-stamped by Eric Seidel. + + Move WebKit into Source + https://bugs.webkit.org/show_bug.cgi?id=52530 + + * GNUmakefile.am: + +2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Fix name of the Korean translation file. + + * kr.po -> ko.po: renamed to correct name. + +2010-12-07 Chyangwoo Ryu <cwryu@debian.org> + + Reviewed by Gustavo Noronha. + + Korean message translation + https://bugs.webkit.org/show_bug.cgi?id=42465 + + * kr.po: Added. + +2010-09-29 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Martin Robinson. + + Avoid touching the po files automatically during the build + process. The maintainers still have the option of forcing an + update with make update-po. + + * GNUmakefile.am: + +2010-09-29 Miloš Popović <gpopac@gmail.com> + + Reviewed by Gustavo Noronha Silva. + + Serbian translations update. + + * sr.po: + * sr@latin.po: + +2010-09-29 Reinout van Schouwen <reinouts@gnome.org> + + Reviewed by Gustavo Noronha. + + [GTK] Updated Dutch translation + https://bugs.webkit.org/show_bug.cgi?id=46050 + + * nl.po: + +2010-08-31 Sheriff Bot <webkit.review.bot@gmail.com> + + Unreviewed, rolling out r66519. + http://trac.webkit.org/changeset/66519 + https://bugs.webkit.org/show_bug.cgi?id=44973 + + Broke GTK+. (Requested by kov on #webkit). + + * cs.po: + * de.po: + * en_GB.po: + * es.po: + * et.po: + * gl.po: + * gu.po: + * he.po: + * it.po: + * lt.po: + * lv.po: + * nb.po: + * nl.po: + * pa.po: + * pt.po: + * pt_BR.po: + * ru.po: + * sl.po: + * sr.po: + * sr@latin.po: + * sv.po: + * uk.po: + * vi.po: + * zh_CN.po: + +2010-08-31 Gustavo Noronha Silva <gns@gnome.org> + + Refreshed all po files with the latest potfile. + + * cs.po: + * de.po: + * en_GB.po: + * es.po: + * et.po: + * gl.po: + * gu.po: + * he.po: + * it.po: + * lt.po: + * lv.po: + * nb.po: + * nl.po: + * pa.po: + * pt.po: + * pt_BR.po: + * ru.po: + * sl.po: + * sr.po: + * sr@latin.po: + * sv.po: + * uk.po: + * vi.po: + * zh_CN.po: + +2010-08-31 Jorge González <aloriel@gmail.com> + + Reviewed by Gustavo Noronha. + + [GTK] Spanish translation for trunk + https://bugs.webkit.org/show_bug.cgi?id=44395 + + * es.po: Updated. + +2010-08-31 Kjartan Maraas <kmaraas@gnome.org> + + Reviewed by Gustavo Noronha Silva. + + WebKitGTK+ translation needed + https://bugzilla.gnome.org/show_bug.cgi?id=610099 + + Initial Norwegian (bokmal) translation. + + * nb.po: Added. + +2010-08-19 Philippe Normand <pnormand@igalia.com> + + Reviewed by Gustavo Noronha Silva. + + [GStreamer] GTK XOverlay support in GStreamerGWorld + https://bugs.webkit.org/show_bug.cgi?id=39474 + + * POTFILES: Added new file that contains strings to extract. + +2010-08-03 Jorge González <aloriel@gmail.com> + + Reviewed by Gustavo Noronha. + + Spanish translation update. + + * es.po: Updated. + +2010-07-13 Alejandro G. Castro <alex@igalia.com> + + Reviewed by Gustavo Noronha. + + This file is generated, we do not need to upload it to the + repository. + + * webkit.pot: Removed. + +2010-06-25 Fran Diéguez <fran.dieguez@mabishu.com> + + Reviewed by Darin Adler. + + Add Galician translation to webkitgtk + https://bugs.webkit.org/show_bug.cgi?id=39547 + + * gl.po: Added. + +2010-04-05 Lucas Lommer <llommer@svn.gnome.org> + + Reviewed by Gustavo Noronha. + + Czech translation for WebKitGtk + https://bugs.webkit.org/show_bug.cgi?id=36879 + + * cs.po: Added. + +2010-04-05 Christian Kirbach <Christian.Kirbach@googlemail.com> + + Reviewed by Gustavo Noronha. + + Updated German translation + https://bugs.webkit.org/show_bug.cgi?id=36453 + + * de.po: + +2010-04-05 Luca Ferretti <elle.uca@libero.it> + + Reviewed by Gustavo Noronha. + + Italian translation for 1.1.90 + https://bugs.webkit.org/show_bug.cgi?id=36323 + + * it.po: + +2010-03-25 Reinout van Schouwen <reinouts@gnome.org> + + Reviewed by Gustavo Noronha. + + Updated Dutch translation + https://bugs.webkit.org/show_bug.cgi?id=36432 + + * nl.po: + +2010-03-24 Yuri Chornoivan <yurchor@ukr.net> + + Reviewed by Gustavo Noronha. + + Ukrainian translation. + + * uk.po: Added. + +2010-03-16 Matej Urbančič <mateju@svn.gnome.org> + + Reviewed by Gustavo Noronha. + + Slovenian translation. + + * sl.po: Added. + +2010-03-16 António Lima <amrlima@gmail.com> + + Reviewed by Gustavo Noronha. + + Translation for pt (Portuguese) + https://bugs.webkit.org/show_bug.cgi?id=36148 + + * pt.po: Added. + +2010-03-10 Priit Laes <plaes@plaes.org> + + Reviewed by Gustavo Noronha. + + Estonian translation. + + * et.po: Added. + +2010-03-09 Peteris Krisjanis <pecisk@gmail.com> + + Reviewed by Gustavo Noronha. + + Latvian translation. + + * lv.po: Added. + +2010-03-09 Duy Nguyen <pclouds@gmail.com> + + Reviewed by Gustavo Noronha. + + Vietnamese translation update. + + * vi.po: + +2010-03-09 Rimas Kudelis <rq@akl.lt> + + Reviewed by Gustavo Noronha. + + Lithuanian translation update. + + * lt.po: + +2010-02-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Updated to accomodate the change done to the localized string. + + * de.po: + * en_GB.po: + * es.po: + * gu.po: + * he.po: + * it.po: + * lt.po: + * nl.po: + * pa.po: + * pt_BR.po: + * ru.po: + * sr.po: + * sr@latin.po: + * sv.po: + * vi.po: + * webkit.pot: + * zh_CN.po: + +2010-02-23 Mario Blättermann <mariobl@freenet.de> + + Reviewed by Gustavo Noronha. + + German translation update. + + * de.po: + +2010-02-23 Daniel Nylander <po@danielnylander.se> + + Reviewed by Gustavo Noronha. + + Swedish translation update. + + * sv.po: + +2010-02-23 Ankit Patel <ankit@redhat.com> + + Reviewed by Gustavo Noronha. + + Gujarati translation. + + * gu.po: Added. + +2010-02-18 A S Alam <amanpreet.alam@gmail.com> + + Punjabi translation. + + * pa.po: Added. + +2010-02-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Refreshed all localization-related files, so that they are + up-to-date with the code. + + * de.po: Updated. + * en_GB.po: Updated. + * es.po: Updated. + * it.po: Updated. + * lt.po: Updated. + * nl.po: Updated. + * pt_BR.po: Updated. + * ru.po: Updated. + * sr.po: Updated. + * sr@latin.po: Updated. + * sv.po: Updated. + * vi.po: Updated. + * webkit.pot: Updated. + * zh_CN.po: Updated. + +2010-02-16 Gil Osher <gilosher@gmail.com> + + Reviewed by Gustavo Noronha. + + Localization of WebKitGTK+ in Hebrew. + + * he.po: Added. + +2009-10-19 Daniel Macks <dmacks@netspace.org> + + Reviewed by Adam Barth. + + Inconsistent handling of gettext domain can cause compile failure + https://bugs.webkit.org/show_bug.cgi?id=30292 + + * GNUmakefile.am: Use DOMAIN variable instead of hard-coded value + +2009-10-15 Jan Michael Alonzo <jmalonzo@webkit.org> + + Reviewed by Xan Lopez. + + [GTK] marshal stamp files are not cleaned after a distclean + https://bugs.webkit.org/show_bug.cgi?id=30156 + + Add stamp-po to CLEANFILES. + + * GNUmakefile.am: + +2009-10-09 Rimas Kudelis <rq@akl.lt> + + Rubber-stamped by Gustavo Noronha + + https://bugs.webkit.org/show_bug.cgi?id=30054 + Localization of WebKit GTK into Lithuanian + + * lt.po: Added. + +2009-07-18 Jorge González <aloriel@gmail.com> + + Rubber-stamped by Jan Alonzo. + + es translation + https://bugs.webkit.org/show_bug.cgi?id=26319 + + * es.po: Added. + +2009-07-15 Aron Xu <aronmalache@163.com> + + Rubber-stamped by Jan Alonzo. + + Simplified Chinese translation + https://bugs.webkit.org/show_bug.cgi?id=27252 + + * zh_CN.po: Added. + +2009-07-15 Bruce Cowan <bugs@bcowan.fastmail.co.uk> + + Rubber-stamped by Jan Alonzo. + + [Gtk] en_GB translation + https://bugs.webkit.org/show_bug.cgi?id=27244 + + * en_GB.po: Added. + +2009-07-13 Reinout van Schouwen <reinouts@gnome.org> + + <https://bugs.webkit.org/show_bug.cgi?id=26980> [Gtk] Updated Dutch translation + + Rubber-stamped by Jan Alonzo. + + * nl.po: Added. + +2009-06-28 Miloš Popović <gpopac@gmail.com> + + Rubber-stamped by Jan Alonzo. + + New Serbian translation. + + * sr.po: Added. + * sr@latin.po: Added. + +2009-06-25 Duy Nguyen <pclouds@gmail.com> + + Rubber-stamped by Jan Alonzo. + + Gtk port Vietnamese translation + https://bugs.webkit.org/show_bug.cgi?id=26739 + + * vi.po: Added. + +2009-05-13 Luca Ferretti <elle.uca@libero.it> + + Rubber-stamped by Xan Lopez. + + New Italian translation. + + * it.po: Added. + +2009-05-11 Anton Shestakov <engored@ya.ru> + + Rubber-stamped by Gustavo Noronha. + + New Russian translation. + + * ru.po: Added. + +2009-05-06 Daniel Nylander <po@danielnylander.se> + + Rubber-stamped by Gustavo Noronha. + + Swedish translation for WebKitGTK+. + + * sv.po: Added. + +2009-04-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Xan Lopez. + + * pt_BR.po: translation update. + +2009-04-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Unreviewed build fix to generate all .mo files at the correct + location. + + * GNUmakefile.am: + +2009-04-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Reviewed by Holger Freyther. + + https://bugs.webkit.org/show_bug.cgi?id=25124 + [GTK] many strings still missing translation calls + + Extracting translation for the files that got translation calls. + + * POTFILES: + * de.po: + * pt_BR.po: + * webkit.pot: + +2009-04-06 Christian Dywan <christian@twotoasts.de> + + Rubber-stamped by Oliver Hunt. + + * de.po: Added German translation for WebKitGTK+. + +2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Sam Weinig. + + * pt_BR.po: Added Brazilian Portuguese translation for WebKitGTK+. + +2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> + + Rubber-stamped by Sam Weinig. + + * GNUmakefile.am, POTFILES, webkit.pot: Initial setup of the + localization infra-structure. + diff --git a/Source/WebKit/gtk/po/GNUmakefile.am b/Source/WebKit/gtk/po/GNUmakefile.am new file mode 100644 index 0000000..91a10c4 --- /dev/null +++ b/Source/WebKit/gtk/po/GNUmakefile.am @@ -0,0 +1,213 @@ +# Gettext stuff; based on the contents of the Makefile.in.in file +# distributed with GNU Gettext. +# +# The original copyright notice follows: +# +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 + +DOMAIN := $(GETTEXT_PACKAGE) + +MSGFMT := $(shell which msgfmt) + +XGETTEXT := $(shell which xgettext) + +MSGMERGE := $(shell which msgmerge) + +MSGMERGE_UPDATE := $(MSGMERGE) --update + +POFILES += $(shell ls $(srcdir)/Source/WebKit/gtk/po/*.po) + +MOFILES += $(shell echo $(POFILES) | tr ' ' '\n' | sed "s,^$(srcdir)/,,g" | sed 's/\.po/.mo/g') + +.po.mo: + test -d Source/WebKit/gtk/po/ || mkdir -p Source/WebKit/gtk/po/ + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o $@ $< + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(MOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot $(MOFILES) + test ! -f $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot || \ + test -z "$(MOFILES)" || $(MAKE) $(MOFILES) + @test ! -f $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/Source/WebKit/gtk/po/POTFILES + package_gnu=''; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/Source/WebKit/gtk/po/POTFILES \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + --keyword=_ --keyword=N_ -o $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/Source/WebKit/gtk/po/POTFILES \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + --keyword=_ --keyword=N_ -o $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot \ + ;; \ + esac + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +update-po-files: $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot + @for pofile in $(POFILES); do \ + lang=`echo $$pofile | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/Source/WebKit/gtk/po/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir)/Source/WebKit/gtk/po && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + pushd $(srcdir)/Source/WebKit/gtk/po && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + popd; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi; \ + done + +update-po: GNUmakefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) update-po-files + $(MAKE) $(MOFILES) + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# clean rules +CLEANFILES += \ + $(top_builddir)/stamp-po + +MAINTAINERCLEANFILES += \ + $(MOFILES) + +DISTCLEANFILES += \ + $(MOFILES) + +po-install-data-local: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.mo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r Source/WebKit/gtk/po/$$cat; then realcat=Source/WebKit/gtk/po/$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +po-installdirs-data-local: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +po-uninstall-local: + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.mo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done diff --git a/Source/WebKit/gtk/po/POTFILES b/Source/WebKit/gtk/po/POTFILES new file mode 100644 index 0000000..ffd0015 --- /dev/null +++ b/Source/WebKit/gtk/po/POTFILES @@ -0,0 +1,13 @@ +# List of source files which contain translatable strings. +WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp +WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp +WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp +WebKit/gtk/webkit/webkitdownload.cpp +WebKit/gtk/webkit/webkitsoupauthdialog.c +WebKit/gtk/webkit/webkitwebframe.cpp +WebKit/gtk/webkit/webkitwebhistoryitem.cpp +WebKit/gtk/webkit/webkitwebinspector.cpp +WebKit/gtk/webkit/webkitwebnavigationaction.cpp +WebKit/gtk/webkit/webkitwebsettings.cpp +WebKit/gtk/webkit/webkitwebview.cpp +WebCore/platform/gtk/LocalizedStringsGtk.cpp diff --git a/Source/WebKit/gtk/po/README b/Source/WebKit/gtk/po/README new file mode 100644 index 0000000..22dbcc0 --- /dev/null +++ b/Source/WebKit/gtk/po/README @@ -0,0 +1,11 @@ +======================= +WebKitGTK+ Localization +======================= + +WebKitGTK+'s build system is very unorthodox. This means that you will +not get to run the usual make commands in the po directory. + +To refresh the .pot file, go to the root of the build directory, and +run `make webkit.pot-update'. To update the .po files using the new +.pot file run `make update-po'. This will also build the .mo files. + diff --git a/Source/WebKit/gtk/po/cs.po b/Source/WebKit/gtk/po/cs.po new file mode 100644 index 0000000..228ba22 --- /dev/null +++ b/Source/WebKit/gtk/po/cs.po @@ -0,0 +1,1089 @@ +# Czech translation for webkit. +# Copyright (C) 2010 webkit's COPYRIGHT HOLDER +# This file is distributed under the same license as the webkit package. +# Lucas Lommer <llommer@svn.gnome.org>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-31 13:07+0100\n" +"Last-Translator: Lucas Lommer <llommer@svn.gnome.org>\n" +"Language-Team: Czech <gnome-cs-list@gnome.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Nahrát soubor" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Vstupní _metody" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM - značka z_leva doprava" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM - značka zp_rava doleva" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE - _zapouzdření zleva doprava" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE - z_apouzdření zprava doleva" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO - _přepisování zleva doprava" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO - př_episování zprava doleva" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF - zrušení směrovaného _formátování" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS - mezera _nulové šířky" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ - _spojovač nulové šířky" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ - nespojovač n_ulové šířky" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "Vloži_t řídící znak Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Síťový požadavek" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Síťový požadavek na adresu URI, která má být stažena" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Síťová odpověď" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Síťová odpověď na adresu URI, která má být stažena" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Cílová adresa URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Cílová adresa URI, kam soubor uložit" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Navrhovaný název souboru" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Výchozí název souboru při uložení" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Průběh" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Údaj o aktuálním průběhu stahování" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Stav" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Údaj o aktuálním stavu stahování" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Aktuální velikost" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Objem již stažených dat" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Celková velikost" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Celková velikost souboru" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Stahování zrušeno uživatelem" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Požadované uživatelské jméno a heslo, které je vyžadováno stránkou %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Zpráva serveru:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Uživatelské jméno:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Heslo:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "Za_pamatovat si heslo" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Název" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Název rámu" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Nadpis" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Nadpis dokumentu rámu" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "Adresa URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Aktuální adresa URI obsahu zobrazeného v rámci" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Strategie pro vodorovný posuvník" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Údaj o aktuální strategii horizontálního posuvníku rámce." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Strategie pro svislý posuvník" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Údaj o aktuální strategii vertikálního posuvníku rámce." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Nadpis položky historie" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternativní nadpis" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Alternativní nadpis položky historie" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Adresa URI položky historie" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Původní adresa URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Původní adresa URI položky historie" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Čas poslední návštěvy" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Čas, kdy byla položka historie naposledy navštívena" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Zobrazení WWW" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Zobrazení WWW, které vykresluje samotné Zkoumání WWW" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Zkoumaná adresa URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "Adresa URI, která je právě zkoumána" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Povolit profilování jazyka JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Profilovat spuštěné skripty jazyka JavaScript." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Povolit profilování časové osy" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Důvod" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Důvod, proč se objevila tato navigace" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "Adresa URI, která byla požadována jako cíl navigace" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Tlačítko" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Tlačítko používané ke klepnutí" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Stav modifikátoru" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Bitová maska reprezentující stav modifikátorových kláves" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Cílový rám" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Cílový rám navigace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Výchozí kódování" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Výchozí kódování textu použité k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Rodina písma kurzíva" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Výchozí písmo z rodiny kurzíva použité k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Výchozí rodina písma" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Výchozí rodina písma použitého k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Rodina písma Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Výchozí rodina písma Fantasy použitého k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Rodina písma s pevnou šířkou" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Výchozí rodina písma použitého k zobrazení textu s pevnou šířkou." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Rodina písem Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Výchozí písmo z rodiny Sans Serif použité k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Rodina písma Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Výchozí písmo z rodiny Serif použité k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Výchozí velikost písma" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Výchozí velikost písma použitá k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Výchozí velikost písma s pevnou šířkou" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Výchozí velikost písma použitá k zobrazení textu s pevnou šířkou." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Minimální velikost písma" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Minimální velikost písma použitá k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Minimální logická velikost písma" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Minimální logická velikost písma použítá k zobrazení textu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Vynutit 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Vynutit rozlišení 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Obrázky automaticky" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Automatický načíst obrázky." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Zmenšovat obrázky" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "" +"Automaticky zmenšovat samostatně zobrazené obrázky tak, aby se vešly na " +"obrazovku." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Tisknout pozadí" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Zda mají být tisknuty obrázky na pozadí." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Povolit skripty" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Povolit vložené skriptovací jazyky." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Povolit zásuvné moduly" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Povolit vložené objekty zásuvných modulů." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Měnitelná velikost textového pole" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Jestli je možno měnit velikost textového pole." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "Cesta k předpisu vzhledu uživatele" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" +"Adresa URI, kde se nachází předpis vzhledu, který bude aplikován na každou " +"stránku." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Hodnota kroků změn velikosti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Hodnota změn velikosti jednotlivých kroků při zmenšování a zvětšování." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Povolit rozšíření pro vývojáře" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Povolit zvláštní rozšíření pomáhající vývojářům" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Povolit soukromé prohlížení" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Povolit režim soukromého prohlížení stránek" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Povolit kontrolu pravopisu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Povolit kontrolu pravopisu při psaní" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Jazyk, který použít ke kontrole pravopisu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Seznam jazyků použitých ke kontrole pravopisu, oddělený čárkami" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Povolit prohlížení s kurzorem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Jestli povolit zpřístupnění pomocí navigace klávesnicí" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Povolit databázi HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Jeslti povolit podporu pro databázi HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Povolit místní úložiště HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Jestli má být povolena podpora místního úložiště HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Povolit revizi XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Jestli povolit revizi XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Identifikace prohlížeče" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Řetězec identifikace prohlížeče (User agent), který WebKitGtk použije" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript smí automaticky otevírat okna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Jestli smí JavaScript automaticky otevírat okna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Povolit ukládání stránek do vyrovnávací paměti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Povolit ukládání stránek do vyrovnávací paměti k použití při odpojení" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Chování při úpravách" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Režim chování v režimu úprav" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Povolit univerzální přístup ze souboru s URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Povolit univerzální přístup ze souboru s adresami URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Povolit vkládání DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Jestli povolit vkládání DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tabulátor cyklicky prochází prvky" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Jestli klávesa tabulátoru prochází cyklicky prvky stránky." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Povolit výchozí kontextovou nabídku" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Poboluje správu tvorby výchozí kontextové nabídky při klepnutí pravým " +"tlačítkem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +#, fuzzy +msgid "Enable Site Specific Quirks" +msgstr "Povolit řešení kompatibility" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Povolit řešení komapatibility specifických stránek" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Povolit vyrovnávací paměť stránky" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Jestli použít vyrovnávací paměť pro stránky" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Automatická změna velikosti okna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Automaticky změnit velikost okna, pokud o to stránka požádá" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Povolit applet jazyka Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Jestli má být povolena podpora jazyka JavaScript skrze značku <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Vrací název dokumentu @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Vrací aktuální adresu URI obsahu zobrazeného pomocí @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Seznam cílů kopírování" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Seznam cílů, které zobrazení stránky podporuje pro operace kopírování pomocí " +"schránky" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Seznam cílů vkládání" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Seznam cílů, které zobrazení stránky podporuje pro operace vkládání pomocí " +"schránky" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Nastavení" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Asociovaná instance WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Zkoumání WWW" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Asociovaná instance WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Upravitelné" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Jestli uživatel může upravovat obsah" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Průhledné" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Jestli má obsah průhledné pozadí" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Úroveň zvětšení" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Úroveň zvětšení obsahu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Změna velikosti celého obsahu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Jestli má být prováděna změna velikosti celého obsahu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Kódování" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Výchozí kódování zobrazení WWW" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Vlastní kódování" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Vlastní kódování zobrazení WWW" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Adresa URI ikony" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Adresa URI ikony stránky pro #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Potvrdit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Reset" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Tento seznam lze prohledávat. Zadejte klíčová slova hledání:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Vybrat soubor" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Nic)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Otevřít odkaz v novém _okně" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Uložit odkazovaný soubor" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "_Kopírovat adresu odkazu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Otevřít o_brázek v novém okně" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "_Uložit obrázek jako" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Ko_pírovat obrázek" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Otevřít _rám v novém okně" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Obnovit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Nebyly nalezeny žádné návrhy" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorovat kontrolu pravopisu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Učit se kontrolu pravopisu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Vyhledat na WWW" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Vyh_ledat ve slovníku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Otevřít odkaz" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorovat _gramatiku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Kontrola pravopisu a _gramatiky" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Zobrazit kontrolu pravopisu a gramatiky" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Skrýt kontrolu pravopisu a gramatiky" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Zkontrolovat dokument" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "_Kontrola pravopisu během psaní" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Kontrolovat _gramatiku pomocí pravopisu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Písmo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "K_ontury" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Zkoumat _prvek" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Žádná nedávná hledání" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Nedávná hledání" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Vymazat nedávná hledání" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "výraz" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definice" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "stisknutí" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "výběr" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "aktivovat" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "zrušení výběru" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "kontrola" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "přeskočit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " soubory" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Neznámé" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Načítá se…" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Živý přenos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "ovladač prvku zvuku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "ovladač prvku videa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "ztlumení" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "zrušit ztlumení" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "přehrát" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pozastavit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "čas videa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "zpět 30 sekund" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "vrátit se do reálného času" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "uplynulý čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "zbývající čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "stav" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "celá obrazovka" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "rychle vpřed" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "rychle zpět" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "zobrazení ovládacích prvků a stavu prvku zvuku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "zobrazení ovládacích prvků a stavu prvku videa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "ztlumit hudební stopy" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "zrušit ztlumení hudebních stop" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "začít přehrávání" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pozastavit přehrávání" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "přeskočit ve videu 30 sekund zpět" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "vrátit se v promítání videa do reálného šasu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "čas aktuálního videa v sekundách" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "počet zbývajících vteřin videa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "aktuální stav videa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "rychlý přechod zpět" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "rychlý přechod vpřed" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Přehrát video na celou obrazovku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "Nejasný čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "chybějící hodnota" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "typ nesouhlasí" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "vzor nesouhlasí" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "příliš dlouhé" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "nedostatečně velký rozsah" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "příliš velký rozsah" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +#, fuzzy +msgid "step mismatch" +msgstr "krok nesouhlasí" diff --git a/Source/WebKit/gtk/po/de.po b/Source/WebKit/gtk/po/de.po new file mode 100644 index 0000000..b9fb99b --- /dev/null +++ b/Source/WebKit/gtk/po/de.po @@ -0,0 +1,1099 @@ +# German translations for WebKit package. +# This file is put in the public domain. +# Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>, 2009. +# Mario Blättermann <mariobl@gnome.org>, 2010. +# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.21\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-21 21:14+0100\n" +"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n" +"Language-Team: Deutsch <gnome-de@gnome.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Datei hochladen" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Eingabe_methoden" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM Von-_links-nach-rechts-Marke" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM Von-_rechts-nach-links-Marke" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Von-links-nach-rechts-_Einbettung" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Von-rechts-nach-Links-E_inbettung" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Von-links-nach-rechts-Ü_berschreiben" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Von-rechts-nach-links-Ü_berschreiben" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF Richtungsformatierungs-_Pop" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS-Leerraum mit Breite _null" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ-_Verbinder mit Breite null" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ-_Trenner mit Breite null" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Unicode-Steuerzeichen einfügen" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Netzwerkanfrage" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Die Netzwerkanfrage der Adresse, welche heruntergeladen werden soll" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Netzwerkantwort" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Die Netzwerkantwort der Adresse, welche heruntergeladen werden soll" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Zieladresse" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Die Zieladresse, an welcher die Datei gespeichert werden soll" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Vorgeschlagener Dateiname" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Der beim Speichern als Vorgabe vorgeschlagene Dateiname" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Fortschritt" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Bestimmt den aktuellen Fortschritt des Herunterladens" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Status" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Bestimmt den aktuellen Status des Herunterladens" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Aktuelle Größe" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Die Länge der bereits heruntergeladenen Daten" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Gesamtgröße" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Die Gesamtgröße der Datei" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Download wurde vom Benutzer abgebrochen" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Ein Benutzername und ein Passwort sind für die Seite %s erforderlich" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Server-Nachricht:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Benutzername:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Passwort:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "An Passwort _erinnern" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Name" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Der Name des Rahmens" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Titel" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Der Titel des Dokuments in dem Rahmen" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "Adresse" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Die aktuelle Adresse der im Rahmen dargestellten Inhalte" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Richtlinie für horizontal Rollbalken" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Bestimmt die aktuelle Richtlinie für den horizontalen Rollbalken des Rahmens." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Richtlinie für vertikale Rollbalken" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Bestimmt die aktuelle Richtlinie für den vertikalen Rollbalken des Rahmens." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Der Titel des Chronikeintrags" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternativer Titel" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Der alternative Titel des Chronikeintrags" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Die Adresse des Chronikobjekts" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Originaladresse" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Die Originaladresse des Chronikeintrags" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Zeit des letzten Besuchs" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Der Zeitpunkt, an dem der Chronikeintrag zuletzt besucht wurde" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Webansicht" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Die Webansicht, die den Web-Inspektor selbst darstellt" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Untersuchte Adresse" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "Die Adresse, die derzeit untersucht wird" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "JavaScript-Profiling aktivieren" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Das ausgeführte JavaScript profilieren." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Timeline-Profiling aktivieren" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Die WebCore-Instrumentation profilieren." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Grund" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Der Grund, warum diese Navigation geschieht" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "Die Adresse, die als Navigationsziel angefordert wurde" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Knopf" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Der angeklickte Knopf" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Modifikatorstatus" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Eine Bitmaske, die den Status der Zusatztasten darstellt." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Zielrahmen" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Der Zielrahmen der Navigation" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Voreingestellte Zeichenkodierung" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Die voreingestellte Zeichenkodierung zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Kursiv-Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Die vorgegebene Kursiv-Schriftfamilie zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Voreingestellte Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Die voreingestellte Schriftfamilie zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Fantasy-Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Die voreingestellte Fantasy-Schriftfamilie zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Monospace-Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" +"Die voreingestellte Schriftfamilie zur Darstellung von dicktengleichem Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Sans-Serif-Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" +"Die voreingestellte Sans-Serif-Schriftfamilie zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Serif-Schriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Die voreingestellte Serif-Schriftfamilie zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Voreingestellte Schriftgröße" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Die voreingestellte Schriftgröße zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Voreingestellte Monospace-Schriftgröße" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" +"Die voreingestellte Schriftgröße zur Darstellung von dicktengleichem Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Mindestschriftgröße" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Die Mindestgröße der Schrift zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Kleinste logische Schriftgröße" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Die kleinste logische Schriftgröße zur Darstellung von Text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "96 dpi erzwingen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Eine Auflösung von 96 dpi erzwingen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Bilder automatisch laden" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Bilder automatisch laden." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Bilder automatisch verkleinern" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Größe alleinstehender Bilder automatisch anpassen." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Hintergründe drucken" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Gibt an, ob Hintergrundbilder gedruckt werden sollen." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Skripte aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Eingebettete Skriptsprachen aktivieren." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Plugins aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Eingebettete Plugin-Objekte aktivieren." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Größenänderung für Textfelder" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Gibt an, ob die Größe von Textfeldern geändert werden kann." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "Adresse der Benutzer-Stilvorlage" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" +"Die Adresse einer benutzerdefinierten Stilvorlage, die auf alle Seiten " +"angewendet werden soll." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Schrittweite für Größenänderungen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Der Wert für Größenänderungensstufen beim Vergrößern oder Verkleinern." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Erweiterungen für Entwickler aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Aktiviert spezielle Erweiterungen, die Entwickler unterstützen" + +# Steht so im KDE-Browser rekonq. +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Privaten Modus aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Aktiviert den privaten Modus für den Browser." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Rechtschreibprüfung aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Rechtschreibung beim Tippen überprüfen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Sprachen für die Rechtschreibprüfung" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Durch Kommata getrennte Liste von Sprachen für die Rechtschreibprüfung" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Caret-Modus aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Legt fest, ob die barrierefreie Tastaturnavigation aktiviert werden soll" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "HTML5-Datenbank aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Legt fest, ob HTML5-Datenbanken unterstützt werden" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Lokale Speicherung nach HTML5 aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Legt fest, ob lokale Speicherung nach HTML5 unterstützt wird" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "XSS-Auditor aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Legt fest, ob der XSS-Auditor aktiviert ist" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Benutzerprogramm" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Von WebKitGtk verwendete Zeichenkette für das Benutzerprogramm" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript darf Fenster automatisch öffnen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Legt fest, ob JavaScript Fenster automatisch öffnen darf" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Offline-Webanwendungscache aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Legt fest, ob der Offline-Webanwendungscache aktiviert wird" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Bearbeitungsverhalten" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Das Verhalten im Bearbeitungsmodus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Unbeschränkten Zugriff von Datei-Adressen aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Legt fest, ob unbeschränkter Zugriff von Datei-Adressen aktiviert wird" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Einfügen ins DOM aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Legt fest, ob Einfügen ins DOM aktiviert ist" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tabulatortaste wechselt zwischen Elementen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" +"Legt fest, ob die Tabulatortaste zwischen Elementen auf der Seite wechselt." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Voreingestelltes Kontext-Menü aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Drücken der rechten Maustaste blendet das voreingestellte Kontext-Menü ein" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Seitenspezifische Fehlerumgehungen aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Seitenspezifische Kompatibilitätsprobleme umgehen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Seiten-Cache aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Legt fest, ob Seiten-Cache verwendet werden soll" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Fenstergröße automatisch anpassen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Die Größe des obersten Fensters auf Aufforderung einer Seite automatisch " +"anpassen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Java-Applet aktivieren" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Legt fest, ob Java-Applets mittels <applet> unterstützt werden sollen" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Gibt den Dokumenttitel von @web_view zurück" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Gibt die aktuelle Adresse des von @web_view angezeigten Inhalts zurück" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Liste der Kopierziele" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Die Liste der Ziele, die diese Webansicht für Kopieren in die Zwischenablage " +"unterstützt" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Liste der Einfügeziele" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Die Liste der Ziele, die diese Webansicht für Einfügen der Zwischenablage " +"unterstützt" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Einstellungen" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Eine zugeordnete WebKitWebSettings-Instanz" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Web-Inspektor" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Die zugeordnete WebKitWebInspector-Instanz" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Bearbeitbar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Gibt an, ob der Inhalt vom Benutzer bearbeitet werden kann" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparent" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Gibt an, ob der Inhalt einen transparenten Hintergrund hat" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Die Vergrößerungsstufe des Inhalts" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Vollständige Größenänderung" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Gibt an, ob Größenänderungen den gesamten Inhalt beeinflussen" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Zeichenkodierung" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Die vorgegebene Zeichenkodierung der Webansicht" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Benutzerdefinierte Zeichenkodierung" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Die benutzerdefinierte Zeichenkodierung der Webansicht" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Symboladresse" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Die Adresse des favicon-Symbols für #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Absenden" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Zurücksetzen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Dieser Index ist durchsuchbar. Geben Sie Suchbegriffe ein: " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Datei wählen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Kein)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Verweis in neuem _Reiter öffnen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "Verweisziel herunter_laden" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Verweisziel _kopieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "_Bild in neuem Fenster öffnen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Bil_d speichern unter" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Bild k_opieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "_Rahmen in neuem Fenster öffnen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Neu laden" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Keine Vorschläge verfügbar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "Rechtschreibung _ignorieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "Rechtschreibung _hinzufügen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "Im Netz _suchen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "In _Wörterbuch nachschlagen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "Verweis ö_ffnen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Grammatik _ignorieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Rechtschreibung und _Grammatik" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "Rechtschreibung und Grammatik _anzeigen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "Rechtschreibung und Grammatik _verbergen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Dokument jetzt ü_berprüfen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Rechtschreibung beim _Eintippen überprüfen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Grammatik beim _Eintippen überprüfen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Schriftart" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Umrandung" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Element _untersuchen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Keine vergangenen Suchen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Letzte Suchen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "Letzte Su_chen löschen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "Begriff" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "Festlegung" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "drücken" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "markieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "aktivieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "abwählen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "wählen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "überspringen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " Dateien" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Unbekannt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Ladevorgang …" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Live-Ausstrahlung" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "Steuerung für Audio-Elemente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "Steuerung für Video-Elemente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "Stumm schalten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "Laut schalten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "Abspielen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "Pausieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "Filmdauer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "Rollbalken-Schieber der Zeitleiste" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "30 Sekunden zurück" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "Auf Echtzeit zurückstellen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "Vergangene Zeit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "Verbleibende Zeit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "Status" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "Vollbild" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "Vorspulen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "Zurückspulen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "geschlossene Beschriftung zeigen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "geschlossene Beschriftung verbergen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "Wiedergabesteuerung und Statusanzeige für Audio-Elemente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "Wiedergabesteuerung und Statusanzeige für Video-Elemente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "Tonspuren stumm schalten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "Tonspuren laut schalten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "Wiedergabe starten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "Wiedergabe pausieren" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "Zeitschieber für Filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "Zeitschiebergriff für Filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "Film 30 Sekunden zurückspulen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "Streaming-Video auf Echtzeit zurückstellen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "Aktuelle Filmwiedergabezeit in Sekunden" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "Anzahl verbleibender Sekunden des Films" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "Status des aktuellen Films" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "Schnell zurückspulen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "Schnell vorspulen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Den momentanen Film im Vollbildmodus wiedergeben" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "beginnen, geschlossene Beschriftung zu zeigen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "beenden, geschlossene Beschriftung zu zeigen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "Unbegrenzte Zeit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "Wert fehlt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "Typ passt nicht" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "Muster passt nicht" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "Zu lang" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "Bereich unterschritten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "Bereich überschritten" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "Schritt passt nicht" + +#~ msgid "_Searchable Index" +#~ msgstr "Durchsuchbarer _Index" diff --git a/Source/WebKit/gtk/po/en_GB.po b/Source/WebKit/gtk/po/en_GB.po new file mode 100644 index 0000000..7174fc7 --- /dev/null +++ b/Source/WebKit/gtk/po/en_GB.po @@ -0,0 +1,1095 @@ +# British English translation of webkit. +# Copyright (C) 2009 webkit's COPYRIGHT HOLDER +# This file is distributed under the same licence as the webkit package. +# Bruce Cowan <bcowan@fastmail.co.uk>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2009-07-14 02:01+0100\n" +"Last-Translator: Bruce Cowan <bcowan@fastmail.co.uk>\n" +"Language-Team: British English <en@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Upload File" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Input _Methods" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM _Left-to-right mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM _Right-to-left mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Left-to-right _embedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Right-to-left e_mbedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Left-to-right _override" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Right-to-left o_verride" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Pop directional formatting" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _Zero width space" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Zero width _joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Zero width _non-joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Insert Unicode Control Character" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Network Request" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "The network request for the URI that should be downloaded" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "Network Request" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "The network request for the URI that should be downloaded" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Destination URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "The destination URI where to save the file" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Suggested Filename" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "The filename suggested as default when saving" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Progress" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determines the current progress of the download" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Status" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determines the current status of the download" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Current Size" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "The length of the data already downloaded" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Total Size" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "The total size of the file" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "User cancelled the download" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "A username and password are being requested by the site %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Username:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Password:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "Remember password" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Name" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "The name of the frame" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Title" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "The document title of the frame" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "The current URI of the contents displayed by the frame" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Determines the current progress of the download" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Determines the current progress of the download" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "The title of the history item" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternate Title" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "The alternate title of the history item" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "The URI of the history item" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Original URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "The original URI of the history item" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Last visited Time" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "The time at which the history item was last visited" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Web View" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "The Web View that renders the Web Inspector itself" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Inspected URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "The URI that is currently being inspected" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Enable JavaScript profiling" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Profile the executed JavaScript." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "Enable JavaScript profiling" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Reason" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "The reason why this navigation is occurring" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "The URI that was requested as the target for the navigation" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Button" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "The button used to click" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Modifier state" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "A bitmask representing the state of the modifier keys" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "The name of the frame" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "The URI that was requested as the target for the navigation" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Default Encoding" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "The default encoding used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Cursive Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "The default Cursive font family used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Default Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "The default font family used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Fantasy Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "The default Fantasy font family used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Monospace Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "The default font family used to display monospace text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Sans Serif Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "The default Sans Serif font family used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Serif Font Family" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "The default Serif font family used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Default Font Size" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "The default font size used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Default Monospace Font Size" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "The default font size used to display monospace text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Minimum Font Size" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "The minimum font size used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Minimum Logical Font Size" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "The minimum logical font size used to display text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Enforce 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Enforce a resolution of 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Auto Load Images" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Load images automatically." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Auto Shrink Images" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Automatically shrink standalone images to fit." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Print Backgrounds" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Whether background images should be printed." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Enable Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Enable embedded scripting languages." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Enable Plugins" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Enable embedded plugin objects." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Resizable Text Areas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Whether text areas are resizable." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "User Stylesheet URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "The URI of a stylesheet that is applied to every page." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Zoom Stepping Value" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "The value by which the zoom level is changed when zooming in or out." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Enable Developer Extras" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Enables special extensions that help developers" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Enable Private Browsing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Enables private browsing mode" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "Check Spelling While _Typing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "Enable Private Browsing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "Enable Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "Enable Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "Whether background images should be printed." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "Enable JavaScript profiling" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Returns the @web_view's document title" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Returns the current URI of the contents displayed by the @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Copy target list" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "The list of targets this web view supports for clipboard copying" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Paste target list" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "The list of targets this web view supports for clipboard pasting" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Settings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "An associated WebKitWebSettings instance" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Web Inspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "The associated WebKitWebInspector instance" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Editable" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Whether content can be modified by the user" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparent" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Whether content has a transparent background" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Zoom level" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "The level of zoom of the content" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Full content zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Whether the full content is scaled when zooming" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Encoding" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "The default encoding of the web view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Custom Encoding" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "The custom encoding of the web view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Submit" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Reset" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Choose File" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(None)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Open Link in New _Window" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Download Linked File" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Copy Link Loc_ation" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Open _Image in New Window" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Sa_ve Image As" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Cop_y Image" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Open _Frame in New Window" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Reload" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "No Guesses Found" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignore Spelling" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Learn Spelling" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Search the Web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Look Up in Dictionary" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Open Link" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignore _Grammar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Spelling and _Grammar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Show Spelling and Grammar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Hide Spelling and Grammar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Check Document Now" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Check Spelling While _Typing" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Check _Grammar With Spelling" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Font" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Outline" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspect _Element" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "No recent searches" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Recent searches" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Clear recent searches" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "term" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definition" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "press" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "select" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "activate" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "untick" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "tick" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "jump" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " files" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Unknown" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "Status" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "definition" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "_Searchable Index" diff --git a/Source/WebKit/gtk/po/es.po b/Source/WebKit/gtk/po/es.po new file mode 100644 index 0000000..83ad6bf --- /dev/null +++ b/Source/WebKit/gtk/po/es.po @@ -0,0 +1,1101 @@ +# translation of webkit.po to Español +# This file is put in the public domain. +# Jorge González González <aloriel@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-08-22 12:03+0200\n" +"Last-Translator: Jorge González González <aloriel@gmail.com>\n" +"Language-Team: Spanish <es@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Subir archivo" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Métodos de entrada" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "Marca de _izquierda-a-derecha [LRM]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "Marca de _derecha-a-izquierda [RLM]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "In_crustamiento de izquierda-a-derecha [LRE]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "Inc_rustamiento de derecha-a-izquierda [RLE]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "_Prevalencia de izquierda-a-derecha [LRO]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "Pre_valencia de derecha-a-izquierda [RLO]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "Formateo d_ireccional emergente [PDF]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "Espacio de ancho _cero [ZWS]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "En_samblador de ancho cero [ZWJ]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "_No ensamblador de ancho cero [ZWNJ]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Insertar un carácter de control Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Solicitud de red" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "La solicitud de red para el URI que se debe descargar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Respuesta de red" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "La respuesta de red para el URI que se debería descargar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI de destino" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "El URI de destino donde guardar el archivo" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Nombre de archivo sugerido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "El nombre de archivo sugerido como predeterminado al guardar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Progreso" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determina el progreso actual de la descarga" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Estado" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determina el estado actual de la descarga" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Tamaño actual" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "El tamaño de los datos ya descargados" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Tamaño total" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "El tamaño total del archivo" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "El usuario canceló la descarga" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "El sitio %s está solicitando un usuario y una contraseña" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Mensaje del servidor:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Contraseña:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Recordar contraseña" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Nombre" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "El nombre del marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Título" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "El nombre de documento del marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "El URI actual del contenido mostrado en el marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Directiva de la barra de desplazamiento horizontal" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Determina la política actual para la barra de desplazamiento horizontal del " +"marco." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Directiva de la barra de desplazamiento vertical" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Determina la política actual para la barra de desplazamiento vertical del " +"marco." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "El título del elemento del histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Título alternativo" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "El título alternativo del elemento del histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "El URI del elemento del histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI original" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "El URI original del elemento del histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Hora de la última visita" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "La hora en la que se vió el elemento del histórico por última vez" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Vista web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "La vista de web que renderiza el inspector web en sí" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI inspeccionada" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "El URI que actualmente está siendo inspeccionado" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Activar perfilado de JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Perfilar el JavaScript ejecutado." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Activar perfilado de tiempo" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Razón" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "La razón por la cuál está ocurriendo esta navegación" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "El URI solicitado como el objetivo para la navegación" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Botón" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "El botón usado para pulsar" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Estado del modificador" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "" +"Una máscara de bits que representa el estado de las teclas modificadoras" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Marco de destino" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "El marco de destino para la navegación" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Codificación predeterminada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "La codificación predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Tipografía cursiva" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "" +"La familia tipográfica cursiva predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Tipografía predeterminada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "La familia tipográfica predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Familia de tipografía fantasía" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "" +"La familia tipográfica fantasía predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Tipografía Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" +"La familia tipográfica predeterminada usada para mostrar texto monoespaciado." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Tipografía Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" +"La familia tipográfica Sans Serif predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Tipografía Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "La familia tipográfica Serif predeterminada usada para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Tamaño de predeterminado de tipografía" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "El tamaño de tipografía predeterminado usado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Tipografía predeterminada Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" +"El tamaño de tipografía predeterminado usado para mostrar texto " +"monoespaciado." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Tamaño mínimo de tipografía" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "El mínimo tamaño de tipografía usado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Tamaño mínimo lógico de tipografía" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "El tamaño mínimo lógico de tipografía usado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Forzar 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Forzar una resolución de 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Cargar imágenes automáticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Cargar imágenes automáticamente." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Autoencoger imágenes" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Encoger imágenes independientes para ajustarlas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Imprimir fondos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Indica si se deben imprimir las imágenes de fondo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Activar scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Activar lenguajes de scrpting empotrados" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Activar complementos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Activar objetos de complemento empotrados." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Áreas de texto redimensionables" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Indica si las áreas de texto son redimensionables." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI de la hoja de estilo del usuario" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "El URI de una hoja de estilo que se aplica a cada página." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Valor del paso de la ampliación" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"El valor por el cuál el nivel de ampliación se cambia al ampliar o reducir." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Activar extras para desarrolladores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Activa extensiones especiales para ayudar a los desarrolladores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Activar navegación privada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Activa el modo de navegación privado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Activar revisión ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Activa la revisión ortográfica al escribir" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Idiomas que usar para la revisión ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Lista separada por comas de los idiomas que usar para la revisión ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Activar navegación por cursor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Indica si activar la mejora de accesibilidad para navegación por teclado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Activar la base de datos de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Indica si se debe activar el soporte para la base de datos de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Activar almacén local de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Indica si activar el soporte de almacén local de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Activar el auditor de XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Indica si se debe activar el auditor de XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript puede abrir ventanas automáticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Indica si JavaScript puede abrir ventanas automáticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Activar la caché de aplicación fuera de línea" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Indica si activar la caché de aplicación web fuera de línea" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Activar caché de páginas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Indica si se debería usar la caché de páginas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Autoredimensionar ventana" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Redimensionar automáticamente la ventana de nivel superior cuando una página " +"lo solicita" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Activar la miniaplicación de Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" +"Indica si se debería activar el soporte de miniaplicaciones Java a través de " +"<applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Devuelve el título del documento de @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Devuelve el contenido actual del URI mostrado en @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Copiar la lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"La lista de objetivos que esta vista web soporta para copiar desde el " +"portapapeles" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Pegar la lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"La lista de objetivos que esta vista web soporta para pegar desde el " +"portapapeles" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Ajustes" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Una instancia asociada de WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Inspector web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "La instanacia aosiciada de WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Editable" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Indica si el usuario puede modificar el contenido" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Indica si el contenido tiene un fondo transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "El nivel de ampliación del contenido" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Ampliación completa del contenido" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Indica si el contenido completo se escala al ampliar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Codificación" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "La codificación predeterminada de la vista web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Codificación personalizada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "La codificación de caracteres personalizada de la vista de la web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Icono de URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "El URI para el icono favorito para #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Enviar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Restablecer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" +"Es un índice en el que se puede buscar. Introduzca palabras clave de " +"búsqueda:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Elegir archivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Ninguno)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Abrir enlace en una _ventana nueva" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Descargar el archivo enlazado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "_Copiar dirección del enlace" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Abrir _imagen en una ventana nueva" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "_Guardar imagen como" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Copia_r imagen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Abrir _marco en una ventana nueva" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "Re_cargar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "No se encontró ninguna sugerencia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorar ortografía" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Aprender ortografía" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Buscar en la web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Buscar en diccionario" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Abrir enlace" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorar gra_mática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Ortografía y gra_mática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Mostrar ortografía y gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Ocultar ortografía y grámatica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Comprobar documento ahora" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Comprobar ortografía al _escribir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Comprobar gra_mática y ortografía" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Tipografía" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "C_ontorno" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspeccionar _elemento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "No hay búsquedas recientes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Búsquedas recientes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Cancelar búsquedas recientes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "término" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definición" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "pulsar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "seleccionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "activar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "deseleccionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "seleccionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "saltar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr "archivos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Desconocido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Cargando…" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "En directo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "controlador de elemento de sonido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "controlador de elemento de vídeo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "silenciar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "dar voz" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "play" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pause" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "tiempo de la película" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "atrás 30 segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "volver a tiempo real" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "tiempo transcurrido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "tiempo restante" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "pantalla completa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "comenzar la reproducción" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pausar la reproducción" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "número de segundos restantes de la película" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "estado actual de la película" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "tiempo indefinido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "demasiado largo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" diff --git a/Source/WebKit/gtk/po/et.po b/Source/WebKit/gtk/po/et.po new file mode 100644 index 0000000..6bb9033 --- /dev/null +++ b/Source/WebKit/gtk/po/et.po @@ -0,0 +1,803 @@ +# Webkit'i tõlge eesti keelde. +# Estonian translation for webkit. +# +# Copyright (C) 2010 The WebKitGTK+ Team +# This file is distributed under the same license as the webkit package. +# +# Rene Pärts <rene87 hot ee>, 2010. +# Priit Laes <plaes plaes org>, 2010 +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.22\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-16 15:01-0200\n" +"PO-Revision-Date: 2010-02-23 14:25+0300\n" +"Last-Translator: Priit Laes <rene87@hot.ee>\n" +"Language-Team: Estonian <gnome-et@linux.ee>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Upload File" +msgstr "Faili valimine" + +msgid "Input _Methods" +msgstr "Sisestus_meetodid" + +msgid "LRM _Left-to-right mark" +msgstr "LRM _Vasakult paremale märk" + +msgid "RLM _Right-to-left mark" +msgstr "RLM _Paremalt vasakule märk" + +msgid "LRE Left-to-right _embedding" +msgstr "LRE Va_sakult paremale põimimine" + +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Pa_remalt vasakule põimimine" + +msgid "LRO Left-to-right _override" +msgstr "LRO Vasakult paremale ü_lekirjutamine" + +msgid "RLO Right-to-left o_verride" +msgstr "RLO Paremalt vasakule üle_kirjutamine" + +msgid "PDF _Pop directional formatting" +msgstr "PDF _Suundvormindus" + +msgid "ZWS _Zero width space" +msgstr "ZWS _Null-laiusega tühik" + +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Null-laiusega ü_hendaja" + +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWJ Null-laiusega _mitteühendaja" + +msgid "_Insert Unicode Control Character" +msgstr "L_isa Unicode'i juhtmärk" + +msgid "Network Request" +msgstr "Võrgupäring" + +msgid "The network request for the URI that should be downloaded" +msgstr "Võrgupäring allalaaditavale URI-le" + +msgid "Network Response" +msgstr "Võrgu vastus" + +msgid "The network response for the URI that should be downloaded" +msgstr "Võrgu vastus allalaaditavale URI-le" + +msgid "Destination URI" +msgstr "Sihtkoha URI" + +msgid "The destination URI where to save the file" +msgstr "Salvestatava faili sihtkoha URI" + +msgid "Suggested Filename" +msgstr "Soovitatav failinimi" + +msgid "The filename suggested as default when saving" +msgstr "Salvestamisel pakutav vaikimisi failinimi" + +msgid "Progress" +msgstr "Edenemine" + +msgid "Determines the current progress of the download" +msgstr "Tagastab allalaadimise edenemise" + +msgid "Status" +msgstr "Olek" + +msgid "Determines the current status of the download" +msgstr "Tagastab allalaadimise oleku" + +msgid "Current Size" +msgstr "Hetkesuurus" + +msgid "The length of the data already downloaded" +msgstr "Allalaetud andmete maht" + +msgid "Total Size" +msgstr "Kogusuurus" + +msgid "The total size of the file" +msgstr "Faili kogusuurus" + +msgid "User cancelled the download" +msgstr "Allalaadimine katkestatud kasutaja poolt" + +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Saidi %s poolt küsitakse kasutajanime ja parooli" + +msgid "Username:" +msgstr "Kasutajanimi:" + +msgid "Password:" +msgstr "Parool:" + +msgid "_Remember password" +msgstr "_Parooli meeldejätmine" + +msgid "Name" +msgstr "Nimi" + +msgid "The name of the frame" +msgstr "Raami nimi" + +msgid "Title" +msgstr "Pealkiri" + +msgid "The document title of the frame" +msgstr "Raami dokumendi pealkiri" + +msgid "URI" +msgstr "URI" + +msgid "The current URI of the contents displayed by the frame" +msgstr "Raami sisu aktiivne URI" + +msgid "Horizontal Scrollbar Policy" +msgstr "Horisontaalse kerimisriba kasutusreegel" + +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Määrab raami horisontaalse kerimisriba kasutusreeglid." + +msgid "Vertical Scrollbar Policy" +msgstr "Vertikaalse kerimisriba reegel" + +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Määrab raami vertikaalse kerimisriba kasutusreeglid." + +msgid "The title of the history item" +msgstr "Ajalookirje pealkiri" + +msgid "Alternate Title" +msgstr "Alternatiivne pealkiri" + +msgid "The alternate title of the history item" +msgstr "Ajalookirje alternatiivne pealkiri" + +msgid "The URI of the history item" +msgstr "Ajalookirje URI" + +msgid "Original URI" +msgstr "Algne URI" + +msgid "The original URI of the history item" +msgstr "Ajalookirje algne URI" + +msgid "Last visited Time" +msgstr "Viimase külastuse aeg" + +msgid "The time at which the history item was last visited" +msgstr "Ajalookirje viimase külastuse aeg" + +msgid "Web View" +msgstr "Veebivaade" + +msgid "The Web View that renders the Web Inspector itself" +msgstr "Veebiinspektorit esitav veebivaade" + +msgid "Inspected URI" +msgstr "Inspekteeritav URI" + +msgid "The URI that is currently being inspected" +msgstr "Hetkel inspekteeritav URI" + +msgid "Enable JavaScript profiling" +msgstr "Luba JavaScript'i profileerimine" + +msgid "Profile the executed JavaScript." +msgstr "Käivitatava JavaScript'i profileerimine." + +msgid "Enable Timeline profiling" +msgstr "Luba ajatelje profileerimine" + +msgid "Profile the WebCore instrumentation." +msgstr "WebCore'i jälgimisvihjete profileerimine" + +msgid "Reason" +msgstr "Põhjus" + +msgid "The reason why this navigation is occurring" +msgstr "Navigeerimistegevuse esilekutsumise põhjus" + +msgid "The URI that was requested as the target for the navigation" +msgstr "" + +msgid "Button" +msgstr "Nupp" + +msgid "The button used to click" +msgstr "Klõpsamiseks kasutatud nupp" + +msgid "Modifier state" +msgstr "Muuteklahvi olek" + +msgid "A bitmask representing the state of the modifier keys" +msgstr "Muuteklahvide olekut esindav bitimask" + +msgid "Target frame" +msgstr "Sihtraam" + +msgid "The target frame for the navigation" +msgstr "Navigeerimise sihtraam" + +msgid "Default Encoding" +msgstr "Vaikimisi kodeering" + +msgid "The default encoding used to display text." +msgstr "Vaikimisi kasutatav kodeering teksti kuvamiseks." + +msgid "Cursive Font Family" +msgstr "Kursiivne kirjaperekond" + +msgid "The default Cursive font family used to display text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi kursiivne kirjaperekond." + +msgid "Default Font Family" +msgstr "Vaikimisi kirjaperekond" + +msgid "The default font family used to display text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi kirjaperekond." + +msgid "Fantasy Font Family" +msgstr "Erikujuline kirjaperekond" + +msgid "The default Fantasy font family used to display text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi erikujuline kirjaperekond." + +msgid "Monospace Font Family" +msgstr "Püsisammuga kirjaperekond" + +msgid "The default font family used to display monospace text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi püsisammuga kirjaperekond." + +msgid "Sans Serif Font Family" +msgstr "Seriifideta kirjaperekond" + +msgid "The default Sans Serif font family used to display text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi seriifideta kirjaperekond." + +msgid "Serif Font Family" +msgstr "Seriifidega kirjaperekond" + +msgid "The default Serif font family used to display text." +msgstr "Teksti kuvamiseks kasutatav vaikimisi seriifidega kirjaperekond." + +msgid "Default Font Size" +msgstr "Vaikimisi kirjasuurus" + +msgid "The default font size used to display text." +msgstr "Vaikimisi kirjasuurus teksti kuvamiseks." + +msgid "Default Monospace Font Size" +msgstr "Vaikimisi püsisammuga kirja suurus" + +msgid "The default font size used to display monospace text." +msgstr "Vaikimisi kirjasuurus püsisammuga teksti kuvamiseks." + +msgid "Minimum Font Size" +msgstr "Väikseim kirjasuurus" + +msgid "The minimum font size used to display text." +msgstr "Väikseim kirjasuurus teksti kuvamiseks." + +msgid "Minimum Logical Font Size" +msgstr "Väikseim loogilise kirjatüübi kirjasuurus" + +msgid "The minimum logical font size used to display text." +msgstr "Väikseim loogilise kirjatüübi kirjasuurus teksti kuvamiseks." + +msgid "Enforce 96 DPI" +msgstr "Lahutusvõime jõuga 96 DPI" + +msgid "Enforce a resolution of 96 DPI" +msgstr "Pealesunnitud ekraanilahutus on 96 DPI" + +msgid "Auto Load Images" +msgstr "Automaatne piltide laadimine" + +msgid "Load images automatically." +msgstr "Pildid laaditakse automaatselt." + +msgid "Auto Shrink Images" +msgstr "Piltide automaatne vähendamine" + +msgid "Automatically shrink standalone images to fit." +msgstr "Pildid vähendatakse automaatselt sobivaks." + +msgid "Print Backgrounds" +msgstr "Tausta printimine" + +msgid "Whether background images should be printed." +msgstr "Kas printimisel kaasatakse taustapildid või mitte." + +msgid "Enable Scripts" +msgstr "Skriptide lubamine" + +msgid "Enable embedded scripting languages." +msgstr "Manus-skriptikeelte lubamine." + +msgid "Enable Plugins" +msgstr "Pluginate lubamine" + +msgid "Enable embedded plugin objects." +msgstr "Põimitud plugina objektide lubamine." + +msgid "Resizable Text Areas" +msgstr "Muudetav tekstiväljade suurus" + +msgid "Whether text areas are resizable." +msgstr "Kas teksiväljade suurus on muudetav." + +msgid "User Stylesheet URI" +msgstr "Kasutaja laaditabeli URI" + +msgid "The URI of a stylesheet that is applied to every page." +msgstr "Igale lehele rakendatava laaditabeli URI." + +msgid "Zoom Stepping Value" +msgstr "Suurenduse samm" + +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Suurenduse muutumise samm suurendamisel ja vähendamisel." + +msgid "Enable Developer Extras" +msgstr "Arendaja lisade lubamine" + +msgid "Enables special extensions that help developers" +msgstr "Arendajaile mõeldud erilaienduste lubamine" + +msgid "Enable Private Browsing" +msgstr "Privaatns sirvimise lubamine" + +msgid "Enables private browsing mode" +msgstr "Privaatse sirvimisrežiimi lubamine" + +msgid "Enable Spell Checking" +msgstr "Õigekirjakontrolli lubamine" + +msgid "Enables spell checking while typing" +msgstr "Lubab trükkimisel kontrollida õigekirja" + +msgid "Languages to use for spell checking" +msgstr "Õigekirjakontrollis kasutatavad keeled" + +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Komadega eraldatud loend õigekirja kontrollimisel kasutatavatest keeltest" + +msgid "Enable Caret Browsing" +msgstr "Kursoriga sirvimine lubatud" + +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Kas lubada klaviatuurihõlbustused navigeerimiseks" + +msgid "Enable HTML5 Database" +msgstr "HTML5 andmebaasitoe lubamine" + +msgid "Whether to enable HTML5 database support" +msgstr "Kas lubada HTML5 andmebaasi tugi" + +msgid "Enable HTML5 Local Storage" +msgstr "HTML5 kohaliku salvesti lubamine" + +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Kas lubada HTML5 kohaliku salvesti tugi" + +msgid "Enable XSS Auditor" +msgstr "XSS audiitori lubamine" + +msgid "Whether to enable teh XSS auditor" +msgstr "Kas lubada XSS audiitor" + +msgid "User Agent" +msgstr "Sirvija identiteet" + +msgid "The User-Agent string used by WebKitGtk" +msgstr "WebKitGtk poolt kasutatav identiteet" + +msgid "JavaScript can open windows automatically" +msgstr "JavaScript tohib aknaid automaatselt avada" + +msgid "Whether JavaScript can open windows automatically" +msgstr "Kas JavaScript tohib aknaid automaatselt avada või mitte" + +msgid "Enable offline web application cache" +msgstr "Ühenduseta veebirakenduste vahemälu lubamine" + +msgid "Whether to enable offline web application cache" +msgstr "Kas lubada ühenduseta veebirakenduste vahemälu" + +msgid "Editing behavior" +msgstr "Redigeerimisrežiimis käitumine" + +msgid "The behavior mode to use in editing mode" +msgstr "Redigeerimisrežiimis kasutatava käitumisrežiim" + +msgid "Enable universal access from file URIs" +msgstr "Faili URI-dele üleüldise ligipääsu lubamine" + +msgid "Whether to allow universal access from file URIs" +msgstr "Kas lubada faili URI-dele üleüldine ligipääs" + +msgid "Enable DOM paste" +msgstr "DOM-põhise asetamise lubamine" + +msgid "Whether to enable DOM paste" +msgstr "Kas lubada DOM-põhine asetamine" + +msgid "Tab key cycles through elements" +msgstr "Tabulaator liigub elementide vahel" + +msgid "Whether the tab key cycles through elements on the page." +msgstr "Kas tabulaatoriga liigutakse lehe elementide vahel või mitte." + +msgid "Enable Default Context Menu" +msgstr "Vaikimisi kontekstimenüü lubamine" + +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "Lubab parem-klõpsudel vaikimisi kontekstimenüüd luua" + +msgid "Enable Site Specific Quirks" +msgstr "Lehepõhiste ümbernurgalahenduste lubamine" + +msgid "Enables the site-specific compatibility workarounds" +msgstr "Lubab kasutada lehepõhiseid ümbernurgalahendusi" + +msgid "Enable page cache" +msgstr "Lehtede vahemälu lubamine" + +msgid "Whether the page cache should be used" +msgstr "Kas kasutada lehtede vahemälu" + +msgid "Auto Resize Window" +msgstr "Akna suuruse automaatne muutmine" + +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Automaatne ülemtaseme akna suuruse muutmine lehepoolsel päringul" + +msgid "Returns the @web_view's document title" +msgstr "Tagastab @web_view dokumendi pealkirja" + +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Tagastab @web_view-s kuvatava sisu aktiivse URI" + +msgid "Copy target list" +msgstr "Kopeerimisoperatsiooni sihtkohtade loend" + +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" + +msgid "Paste target list" +msgstr "Asetusoperatsiooni sihtkohtade loend" + +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" + +msgid "Settings" +msgstr "Seaded" + +msgid "An associated WebKitWebSettings instance" +msgstr "" + +msgid "Web Inspector" +msgstr "Veebiinspektor" + +msgid "The associated WebKitWebInspector instance" +msgstr "" + +msgid "Editable" +msgstr "Redigeeritav" + +msgid "Whether content can be modified by the user" +msgstr "Kas sisu on kasutaja poolt muudetav või mitte" + +msgid "Transparent" +msgstr "Läbipaistvus" + +msgid "Whether content has a transparent background" +msgstr "Kas sisul on läbipaistev taust või mitte" + +msgid "Zoom level" +msgstr "Suurendusaste" + +msgid "The level of zoom of the content" +msgstr "Sisu suurendusaste" + +msgid "Full content zoom" +msgstr "" + +msgid "Whether the full content is scaled when zooming" +msgstr "" + +msgid "Encoding" +msgstr "Kodeering" + +msgid "The default encoding of the web view" +msgstr "Vaikimisi kodeering veebivaate jaoks" + +msgid "Custom Encoding" +msgstr "Kohandatud kodeering" + +msgid "The custom encoding of the web view" +msgstr "Kohandatud kodeering veebivaate jaoks" + +msgid "Icon URI" +msgstr "Ikooni URI" + +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Veebilehe tunnusikooni URI #WebKitWebView jaoks." + +msgid "Submit" +msgstr "Saada" + +msgid "Reset" +msgstr "Taasta" + +msgid "_Searchable Index" +msgstr "_Otsitav indeks" + +msgid "Choose File" +msgstr "Vali fail" + +msgid "(None)" +msgstr "(Puudub)" + +msgid "Open Link in New _Window" +msgstr "Ava link _uues aknas" + +msgid "_Download Linked File" +msgstr "Salvesta _link" + +msgid "Copy Link Loc_ation" +msgstr "K_opeeri lingi asukoht" + +msgid "Open _Image in New Window" +msgstr "Ava _pilt uues aknas" + +msgid "Sa_ve Image As" +msgstr "_Salvesta pilt" + +msgid "Cop_y Image" +msgstr "_Kopeeri pilt" + +msgid "Open _Frame in New Window" +msgstr "Ava _raam uues aknas" + +msgid "_Reload" +msgstr "_Laadi uuesti" + +msgid "No Guesses Found" +msgstr "Vastavusi ei leitud" + +msgid "_Ignore Spelling" +msgstr "_Eira õigekirja" + +msgid "_Learn Spelling" +msgstr "Õ_pi õigekirja" + +msgid "_Search the Web" +msgstr "_Otsi veebist" + +msgid "_Look Up in Dictionary" +msgstr "_Otsi sõnaraamatust" + +msgid "_Open Link" +msgstr "_Ava link" + +msgid "Ignore _Grammar" +msgstr "Eira _grammatikat" + +msgid "Spelling and _Grammar" +msgstr "Õigekiri ja _grammatika" + +msgid "_Show Spelling and Grammar" +msgstr "_Näita õigakirja ja grammatikat" + +msgid "_Hide Spelling and Grammar" +msgstr "_Peida õigakiri ja grammatika" + +msgid "_Check Document Now" +msgstr "_Kontrolli dokumenti" + +msgid "Check Spelling While _Typing" +msgstr "Õigekirjakontroll _sisestamise ajal" + +msgid "Check _Grammar With Spelling" +msgstr "Õigekirja ja _grammatika kontrollimine" + +msgid "_Font" +msgstr "_Kirjatüüp" + +msgid "_Outline" +msgstr "_Kontuur" + +msgid "Inspect _Element" +msgstr "Uuri _elementi" + +msgid "No recent searches" +msgstr "Hiljutised otsingud puuduvad" + +msgid "Recent searches" +msgstr "Hiljutised otsingud" + +msgid "_Clear recent searches" +msgstr "_Kustuta hiljutised otsingud" + +msgid "term" +msgstr "termin" + +msgid "definition" +msgstr "definitsoon" + +msgid "press" +msgstr "vajuta" + +msgid "select" +msgstr "vali" + +msgid "activate" +msgstr "aktiveeri" + +msgid "uncheck" +msgstr "" + +msgid "check" +msgstr "kontrolli" + +msgid "jump" +msgstr "hüppa" + +msgid " files" +msgstr " faili" + +msgid "Unknown" +msgstr "Tundmatu" + +msgid "Loading..." +msgstr "Laadimine..." + +msgid "Live Broadcast" +msgstr "Otseülekanne" + +msgid "audio element controller" +msgstr "helielemendi juhtija" + +msgid "video element controller" +msgstr "videoelemendi juhtija" + +msgid "mute" +msgstr "vaigista" + +msgid "unmute" +msgstr "taasta heli" + +msgid "play" +msgstr "esita" + +msgid "pause" +msgstr "paus" + +msgid "movie time" +msgstr "filmi aeg" + +msgid "timeline slider thumb" +msgstr "" + +msgid "back 30 seconds" +msgstr "30 sekundit tagasi" + +msgid "return to realtime" +msgstr "tagasta reaalajas" + +msgid "elapsed time" +msgstr "aega kulunud" + +msgid "remaining time" +msgstr "aega jäänud" + +msgid "status" +msgstr "olek" + +msgid "fullscreen" +msgstr "täisekraan" + +msgid "fast forward" +msgstr "edasikerimine" + +msgid "fast reverse" +msgstr "tagasikerimine" + +msgid "show closed captions" +msgstr "" + +msgid "hide closed captions" +msgstr "" + +msgid "audio element playback controls and status display" +msgstr "" + +msgid "video element playback controls and status display" +msgstr "" + +msgid "mute audio tracks" +msgstr "helide vaigistamine" + +msgid "unmute audio tracks" +msgstr "helide taastamine" + +msgid "begin playback" +msgstr "esitamise alustamine" + +msgid "pause playback" +msgstr "esitamise paus" + +msgid "movie time scrubber" +msgstr "" + +msgid "movie time scrubber thumb" +msgstr "" + +msgid "seek movie back 30 seconds" +msgstr "filmi kerimine 30 sekundit tagasi" + +msgid "return streaming movie to real time" +msgstr "filmi voogedastamine reaalajas" + +msgid "current movie time in seconds" +msgstr "filmi kestus sekundites" + +msgid "number of seconds of movie remaining" +msgstr "filmi lõpuni jäänud sekundite arv" + +msgid "current movie status" +msgstr "filmi olek" + +msgid "seek quickly back" +msgstr "kiire tagasikerimine" + +msgid "seek quickly forward" +msgstr "kiire edasikerimine" + +msgid "Play movie in fullscreen mode" +msgstr "Filmi esitamine täisekraanvaates" + +msgid "start displaying closed captions" +msgstr "alusta suletud alapealkirjade näitamist" + +msgid "stop displaying closed captions" +msgstr "lõpeta suletud alapealkirjade näitamine" + +msgid "indefinite time" +msgstr "umbmäärane aeg" + +msgid "value missing" +msgstr "puuduv väärtus" + +msgid "type mismatch" +msgstr "tüübi sobimatus" + +msgid "pattern mismatch" +msgstr "mustri sobimatus" + +msgid "too long" +msgstr "liiga pikk" + +msgid "range underflow" +msgstr "vahemiku alatäitumus" + +msgid "range overflow" +msgstr "vahemiku ületäitumus" + +msgid "step mismatch" +msgstr "astme sobimatus" diff --git a/Source/WebKit/gtk/po/gl.po b/Source/WebKit/gtk/po/gl.po new file mode 100644 index 0000000..266f7f4 --- /dev/null +++ b/Source/WebKit/gtk/po/gl.po @@ -0,0 +1,1117 @@ +# Galician translation for webkit. +# Copyright (C) 2009 webkit's COPYRIGHT HOLDER +# This file is distributed under the same license as the webkit package. +# Fran Diéguez <frandieguez@ubuntu.com>, 2009, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-05-23 01:14+0200\n" +"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n" +"Language-Team: Galician <gnome@g11.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\\\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Subir ficheiro" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Métodos de entrada" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "Marca de _esquerda-a-derita [LRM]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "Marca de _dereita-a-esquerda [RLM]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "In_crustamento de esquerda-a-dereita [LRE]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "Inc_rustamento de dereita-a-esquerda [RLE]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "_Prevalencia de esquerda-a-dereita [LRO]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "Pre_valencia de dereita-a-esquerda [RLO]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "Formatadeo d_ireccional emerxente de PDF" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "Espazo de anchura _cero [ZWS]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "En_samblador de ancho cero [ZWJ]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "_Non ensamblador de anchura cero [ZWNJ]" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Insertar un carácter de control Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Solicitude de rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "A solicitude de rede para o URI que debe descargarse" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#| msgid "Network Request" +msgid "Network Response" +msgstr "Resposta de rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#| msgid "The network request for the URI that should be downloaded" +msgid "The network response for the URI that should be downloaded" +msgstr "A resposta de rede do URI que debería ser descargado" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI de destino" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "A URI de destino onde gardar o ficheiro" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Nome do ficheiro suxerido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "O nome de ficheiro suxerido como predefinido ao gardar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Progreso" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determina o progreso actual da descarga" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Estado" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determina o estado actual da descarga" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Tamaño actual" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "A lonxitude dos datos xa descargados" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Tamaño total" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "O tamaño total do ficheiro" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "O usuario cancelou a descarga" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "O sitio %s solicitou un nome de usuario e unha contrasinal" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Mensaxe do servidor:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Nome de usuario:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Contrasinal:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#| msgid "Remember password" +msgid "_Remember password" +msgstr "_Lembrar o contrasinal" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Nome" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "O nome do marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Título" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "O título do documento do marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "O URI actual dos contidos mostrados no marco" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Normativa da barra de desprazamento horizontal" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#| msgid "Determines the current progress of the download" +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Determina a normativa actual para a barra de desprazamento horizontal para o " +"marco." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Normativa da barra de desprazamento vertical" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#| msgid "Determines the current progress of the download" +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Determina a normativa actual para a barra de desprazamento vertical para o " +"marco." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "O título do elemento do historial" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Título alternativo" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "O título alternativo do elemento do historial" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "O URI do elemento do historial" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI orixinal" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "O URI orixinal do elemento do historial" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Tempo da última visita" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "O tempo no cal o elemento do historial foi visitado a última vez" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Visualización web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "A visualización web que renderiza o propio Inspector web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI inspeccionada" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "O URI que está sendo inspeccionada actualmente" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Activar o perfilado de JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Perfilar o JavaScript executado." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#| msgid "Enable JavaScript profiling" +msgid "Enable Timeline profiling" +msgstr "Activar o perfilado da Liña de tempo" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Perfilar a instrumentación de WebCore." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Razón" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "A razón pola que esta navegación está ocorrendo" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "O URI que foi solicitado como destino para a navegación" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Botón" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "O botón empregado para premer" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Estado dos modificadores" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "A máscara de bits representa o estado das teclas modificadoras" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#| msgid "The name of the frame" +msgid "Target frame" +msgstr "Marco de destino" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#| msgid "The URI that was requested as the target for the navigation" +msgid "The target frame for the navigation" +msgstr "O marco de destino para a navegación" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Codificación predefinida" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "A codificación predefinida empregada para mostrar o texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Familia de tipo de fonte cursiva" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "A familia de tipo de fonte cursiva empregado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Familia de tipo de fonte predefinida" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "A familia de fonte predefinida para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Familia de tipo de fonte Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "A familia de tipo de fonte Fantasy empregado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Familia de tipo de fonte Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "A familia de tipo de fonte predefinido empregado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Familia de tipo de fonte Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "A familia de tipo de fonte Sans Serif empregado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Familia de tipo de fonte Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "A familia de tipo de fonte Serif empregado para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Tamaño do tipo de fonte predefinido" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "O tamaño do tipo de fonte predefinido para mostrar o texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Tamaño predefinido do tipo de fonte monoespaciado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" +"O tamaño predefinido de tipo de fonte para mostrar o texto monoespaciado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Tamaño mínimo para o tipo de fonte" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Tamaño mínimo do tipo de fonte empregado para mostrar o texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "O tamaño lóxico de fonte mínimo" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "O tamaño lóxico de fonte mínimo a empregar para mostrar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Forzar 96 DPI." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Forzar unha resolución de 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Cargar imaxes automáticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Carga imaxes automaticamente." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Recortar imaxes automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Recorta de forma automática as imaxes para que se axusten." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Imprimir fondos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Indica se se deben imprimir as imaxes de fondo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Activar scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Activa as linguaxes de scripting incrustadas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Activar complementos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Activar os obxectos de complementos incrustados." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Áreas de texto retamañábeis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Indica se as áreas de texto son retamañábeis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI da folla de estilos do usuario" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "O URI dunha folla de estilos que se aplica en cada páxina." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Valor de salto do zoom" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"O valor polo cal o nivel de zoom se cambiará ao incrementar o zoom ou " +"reducilo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Activar extras do desenvolvedor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Activa as extensións especiais que axudan aos desenvolvedores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Activar a navegación privada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Activa o modo privado de navegación" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Activar a corrección ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#| msgid "Check Spelling While _Typing" +msgid "Enables spell checking while typing" +msgstr "Comprobar ortografía ao escribir" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Idiomas a usar na corrección ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Lista de separada por comas das linguaxes a usar na comprobación ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#| msgid "Enable Private Browsing" +msgid "Enable Caret Browsing" +msgstr "Activar a navegación cos cursores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Indica se activar a navegación mellorada por teclado para a accesibilidade" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Activar a base de datos de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Indica se activar a compatibilidade de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Activar o almacenamento local de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Indica se activar a compatibilidade de almacenamento local de HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#| msgid "Enable Scripts" +msgid "Enable XSS Auditor" +msgstr "Activar o auditor de XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Indica se activar o auditor de XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Axente de usuario" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "A cadea User-Agent usada polo WebKitGtk" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript pode abrir xanelas automáticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Indica se JavaScript pode abrir xanelas automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Activar a caché de aplicativo web fóra de liña" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Indica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Comportamento de edición" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "O modo de comportamento no modo de edición" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Activar o acceso universal para os URIs de ficheiro" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Indica se permitir o acceso universal desde os URI de ficheiro" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#| msgid "Enable Scripts" +msgid "Enable DOM paste" +msgstr "Activar o pegado de DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Indica se activar o pegado de DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "A tecla de tabulación móvese ciclicamente a través dos elementos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" +"Indica se a tecla de tabulación móvese ciclicamente a través dos elementos " +"nunha da páxina." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Activar o menú contextual predefinido" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Activa a xestión dos clic dereitos para a creación do menú contextual " +"predefinido" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Activar as solucións específicas dun sitio" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Activa os arranxos de compatibilidade específicos dun sitio" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Activar a caché de páxina" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#| msgid "Whether background images should be printed." +msgid "Whether the page cache should be used" +msgstr "Indica se se debería usar a caché de páxina" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Autoredimentsionar a xanela" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Redimensionar automaticamente a xanela de nivel superior cando a páxina o " +"solicite" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#| msgid "Enable JavaScript profiling" +msgid "Enable Java Applet" +msgstr "Activar os Applet de Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" +"Indica se se debería activar a compatibilidade dos Applet de Java a través " +"de <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Devolve o título do documento do @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Devolve o URI actual dos contidos mostrados polo @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Copiar lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"A lista de destinos para os cales esta visualización web ten compatibilidade " +"para copiar no portarretallos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Pegar lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"A lista de destinos para os que esta visualización web ten compatibilidade " +"para pegar no portarretallos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Configuracións" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Unha instancia de WebKitWebSettings asociada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Inspector web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "A instancia de WebKitWebInspector asociada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Editábel" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Indica se o contido pode ser modificado polo usuario" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Indica se o contido pode ter un fondo transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Nivel de zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "O nivel de zoom do contido" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Zoom de contido completo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Indica se o contido completo é escalado ao facer zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Codificación" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "A codificación predefinida para a visualización web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Codificación personalizada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "A codificación personalizada para a visualización web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "URI da icona" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "O URI do favicon para o #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Enviar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Restabelecer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Este é un índice buscábel. Insira as palabras chave de búsqueda:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Seleccionar ficheiro" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(ningún)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Abrir a ligazón nunha nova _xanela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Descargar o ficheiro ligado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Copiar a loc_alización da ligazón" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Abrir _imaxe nunha nova xanela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Gar_dar imaxe como" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Co_piar imaxe" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Abrir _marco nunha nova xanela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Recargar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorar corrección ortográfica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "Apren_er corrección ortográfica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Buscar na web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Buscar no dicionario" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Abrir ligazón" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorar _gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Corrección ortográfica e _gramatical" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Mostrar corrección ortográfica e gramatical" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Agochar corrección ortográfica e gramatical" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Comprobar o documento agora" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Comprobar ortografía ao _escribir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Comprobar _gramática ao escribir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Tipo de fonte" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Contorno" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspeccionar _elemento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Non hai buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Limpar as buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "termo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definición" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "premer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "seleccionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "activado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "desmarcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "marcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "saltar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " ficheiros" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Descoñecido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Cargando..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Retransmisión en vivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "controlador do elemento de son" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "controlador de elemento de vídeo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "enmudecer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "desenmudecer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "reproducir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pausar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "tempo do filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "abrás 30 segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "voltar ao tempo real" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "tempo transcorrido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "tempo restante" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#| msgid "Status" +msgid "status" +msgstr "estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "pantalla completa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "avance rápido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "retroceso rápido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "mostrar os subtítulos pechados" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "ocultar os subtítulos pechados" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "controis e xanela de estado de reprodución dos elementos de son" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "controis e xanela de estado de reprodución dos elementos de vídeo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "enmudecer as pistas de son" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "desenmudecer as pistas de son" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "comezar a reprodución" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pausar a reprodución" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "buscar cara atrás no filme 30 segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "devolver a reprodución en vivo do filme ao tempo real" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "tempo actual do filme en segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "números de segundos que faltan do filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "estado do filme actual" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "buscar cara atrás rápidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "buscar cara adiante rápidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Reproducir o filme en pantalla completa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "comezar a mostrar os subtítulos pechados" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "parar de mostrar os subtítulos pechados" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#| msgid "definition" +msgid "indefinite time" +msgstr "tempo non definido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "falta o valor" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "tipo non coincidente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "patron non coincidente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "demasiado longo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "paso non coincidente" + +#~ msgid "_Searchable Index" +#~ msgstr "Índice bu_scábel" diff --git a/Source/WebKit/gtk/po/gu.po b/Source/WebKit/gtk/po/gu.po new file mode 100644 index 0000000..b0556e7 --- /dev/null +++ b/Source/WebKit/gtk/po/gu.po @@ -0,0 +1,1084 @@ +# translation of webkit.gu.po to Gujarati +# Gujarati translations for PACKAGE package. +# This file is put in the public domain. +# +# Ankitkumar Patel <ankit@redhat.com>, 2010. +# Ankit Patel <ankit@redhat.com>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit.gu\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-02-23 13:54+0530\n" +"Last-Translator: Ankit Patel <ankit@redhat.com>\n" +"Language-Team: Gujarati <fedora-trans-gu@redhat.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "ફાઈલ અપલોડ કરો" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "ઈનપુટ પદ્ધતિઓ (_M)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM _Left-to-right mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM _Right-to-left mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Left-to-right _embedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Right-to-left e_mbedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Left-to-right _override" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Right-to-left o_verride" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Pop directional formatting" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _Zero width space" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Zero width _joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Zero width _non-joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "યુનિકોડ નિયંત્રક અક્ષર દાખલ કરો (_I)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "નેટવર્ક અરજી" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "જે URI ડાઉનલોડ થવી જોઈએ તે માટેની નેટવર્ક અરજી" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "નેટવર્ક પ્રત્યુત્તર" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "જે URI ડાઉનલોડ થવી જોઈએ તે માટેનો નેટવર્ક પ્રત્યુત્તર" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "અંતિમ મુકામ URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "અંતિમ મુકામ URI કે જ્યાં ફાઈલ સંગ્રહવી જોઈએ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "સૂચનીય ફાઈલનામ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "સંગ્રહતી વખતે મૂળભૂત રીતે સૂચવાયેલ ફાઈલનામ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "પ્રગતિ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "ડાઉનલોડની વર્તમાન પ્રગતિ નક્કી કરે છે" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "પરિસ્થિતિ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "ડાઉનલોડની વર્તમાન પરિસ્થિતિ નક્કી કરે છે" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "વર્તમાન માપ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "ડાઉનલોડ થયેલ માહિતીની લંબાઈ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "કુલ માપ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "ફાઈલનું કુલ માપ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "વપરાશકર્તાએ ડાઉનલોડ રદ કર્યું" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "સાઈટ %s દ્વારા વપરાશકર્તાનામ અને પાસવર્ડની અરજી કરવામાં આવી છે" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "વપરાશકર્તાનામ:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "પાસવર્ડ:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "પાસવર્ડ યાદ રાખો (_R)" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "નામ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "ચોકઠાંનું નામ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "શીર્ષક" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "ચોકઠાંનું દસ્તાવેજ શીર્ષક" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "ચોકઠાં દ્વારા દર્શાવવામાં આવેલ સમાવિષ્ટોની વર્તમાન URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "આડી સરકપટ્ટી પોલીસિ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "ચોકઠાંની આડી સરકપટ્ટી માટે વર્તમાન પોલીસિ નક્કી કરે છે." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "ઊભી સરકપટ્ટી પોલીસિ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "ચોકઠાંની ઊભી સરકપટ્ટી માટે વર્તમાન પોલીસિ નક્કી કરે છે." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "ઈતિહાસ વસ્તુનું શીર્ષક" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "વૈકલ્પિક શીર્ષક" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "ઈતિહાસ વસ્તુનું વૈકલ્પિક શીર્ષક" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "ઈતિહાસ વસ્તુની URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "મૂળ URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "ઈતિહાસ વસ્તુનું મૂળ URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "છેલ્લો મુલાકાત લેવાયેલ સમય" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "સમય કે જ્યારે ઈતિહાસ વસ્તુની છેલ્લે મુલાકાત લેવામાં આવી હતી" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "વેબ દેખાવ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "વેબ દેખાવ કે જે વેબ પરીક્ષકને પોતાને ઢાળ આપે છે" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "પરીક્ષિત URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "URI કે જેની વર્તમાનમાં પરીક્ષા કરવામાં આવી છે" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "JavaScript રૂપરેખાકરણ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "ચલાવવામાં આવેલ JavaScript ની રૂપરેખા કરો." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "સમયરેખા રૂપરેખા સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "વેબકોર ઈન્સ્ટ્રુમેન્ટેશનની રૂપરેખા કરો." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "કારણ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "કારણ કે આ શોધખોળ થઈ રહી છે" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI કે જેની શોધખોળના લક્ષ્ય તરીકે અરજી કરવામાં આવી હતી" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "બટન" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "ક્લિક કરવા માટેનું બટન" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "સુધારક સ્થિતિ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "સુધારક કીની સ્થિતિ રજૂ કરતું બીટમાસ્ક" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "લક્ષ્ય ચોકઠું" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "શોધખોળ માટે લક્ષ્ય ચોકઠું" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "મૂળભૂત એનકોડીંગ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "લખાણ દર્શાવવા માટેનું મૂળભૂત એનકોડીંગ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "કર્સીવ ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત કર્સીવ ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "મૂળભૂત ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "ફેન્ટસી ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટસી ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "મોનોસ્પેસ ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "મોનોસ્પેસ લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "સાન્સ સેરીફ ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત સાન્સ સેરીફ ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "સેરીફ ફોન્ટ પરિવાર" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત સેરીફ ફોન્ટ પરિવાર." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "મૂળભૂત ફોન્ટ માપ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત માપ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "મૂળભૂત મોનોસ્પેસ ફોન્ટ માપ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "મોનોસ્પેસ લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત ફોન્ટ માપ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "ન્યૂનતમ ફોન્ટ માપ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત ફોન્ટ માપ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "ન્યૂનતમ તાર્કિક ફોન્ટ માપ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "લખાણ દર્શાવવા માટેનું ન્યૂનતમ તાર્કીક ફોન્ટ માપ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "96 DPI નું દબાણ કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "96 DPI ના રીઝોલ્યુશનનું દબાણ કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "ચિત્રો આપોઆપ લાવો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "ચિત્રો આપોઆપ લાવો." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "ચિત્રો આપોઆપ સંકોચો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "બંધબેસાડવા માટે ચિત્રો આપોઆપ સંકોચો." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "પાશ્વભાગો છાપો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "શું પાશ્વભાગ ચિત્રો છપાવા જોઈએ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "સ્ક્રિપ્ટો સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "જડિત સ્ક્રિપ્ટીંગ ભાષાઓ સક્રિય કરો." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "પ્લગઈનો સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "જડિત પ્લગઈન ઓબ્જેક્ટો સક્રિય કરો." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "માપ બદલી શકાય તેવા લખાણ વિસ્તારો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "શું લખાણ વિસ્તારોનું માપ બદલાવી શકાય." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "વપરાશકર્તા સ્ટાઈલશીટ URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "સ્ટાઈલશીટની URI કે જે દરેક પાનાંને લાગુ પાડવામાં આવેલ છે." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "નાનામોટાપણાની પગલાંકીય કિંમત" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "જ્યારે નાનું કે મોટું કરી રહ્યા હોય ત્યારે કિંમત કે જેના પ્રમાણે નાનું કે મોટું થવું જોઈએ." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "વિકાસકર્તા ઉમેરાઓ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "વિશિષ્ટ વિસ્તરણો સક્રિય કરો કે જે વિકાસકર્તાઓને મદદરૂપ થાય" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "ખાનગી બ્રાઉઝીંગ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "ખાનગી બ્રાઉઝીંગ સ્થિતિ સક્રિય કરે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "જોડણી ચકાસણી સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "લખતી વખતે જોડણી ચકાસણી સક્રિય કરે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "જોડણી ચકાસણી માટે વાપરવાની ભાષાઓ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "જોડણી ચકાસણી માટે વાપરવાની ભાષાઓની અલ્પવિરામથી અલગ પડેલ યાદી" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "કેરેટ બ્રાઉઝીંગ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "શું સુલભતા ઉન્નત કીબોર્ડ શોધખોળ સક્રિય કરવી છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "HTML5 ડેટાબેઝ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "શું HTML5 ડેટાબેઝ આધાર સક્રિય કરવો છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "HTML5 સ્થાનિય સંગ્રહ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "શું HTML5 સ્થાનિય સંગ્રહ આધાર સક્રિય કરવો છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "XSS સંપાદક સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "શું XSS સંપાદક સક્રિય કરવું છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "વપરાશકર્તા એજન્ટ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "WebKitGtk દ્વારા વાપરવામાં આવતી વપરાશકર્તા-એજન્ટ શબ્દમાળા" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript વિન્ડો આપોઆપ ખોલી શકે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "શું JavaScript વિન્ડો આપોઆપ ખોલી શકે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "ઓફલાઈન વેબ કાર્યક્રમ કેશ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "શું ઓફલાઈન વેબ કાર્યક્રમ કેશ સક્રિય કરવી છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "સંપાદન વર્તણૂક" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "સંપાદન સ્થિતિમાં વાપરવાની વર્તણૂક સ્થિતિ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "ફાઈલ URIs માંથી સાર્વત્રિક વપરાશ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "શું ફાઈલ URIs માંથી સાર્વત્રિક વપરાશને પરવાનગી આપવી છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "DOM ચોંટાડવાનું સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "શું DOM ચોંટાડવાનું સક્રિય કરવું છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "ટેબ કી ઘટકોમાં ફરે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "શું ટેબ કી પાનાં પરના ઘટકોમાં ફરે છે." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "મૂળભૂત સંદર્ભ મેનુ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "મૂળભૂત સંદર્ભ મેનુની બનાવટ માટે જમણું-ક્લિકનું નિયંત્રણ સક્રિય કરે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "સાઈટ લગતી તરકીબો સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "સાઈટ-લગતા સુગતમા ઉકેલો સક્રિય કરે છે" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "પાનાં કેશ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "શું પાનાં કેશ વપરાવું જોઈએ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "વિન્ડોનું માપ આપોઆપ બદલો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "જ્યારે પાનું તેની અરજી કરે ત્યારે ટોચસ્તરની વિન્ડોનું માપ આપોઆપ બદલો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "JavaScript રૂપરેખાકરણ સક્રિય કરો" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "@web_view's દસ્તાવેજ શીર્ષક આપે છે" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "@web_view પ્રમાણે દર્શાવવામાં આવેલ સમાવિષ્ટોની વર્તમાન URI આપે છે" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "લક્ષ્ય યાદીની નકલ કરો" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "ક્લિપબોર્ડ નકલ માટે આ વેબ દેખાવ જે લક્ષ્યોને આધાર આપે છે તેની યાદી" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "લક્ષ્ય યાદી ચોંટાડો" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "ક્લિપબોર્ડ ચોંટાડવા માટે વેબ દેખાવ આધારના લક્ષ્યની યાદી" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "સુયોજનો" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "સંકળાયેલ WebKitWebSettings વસ્તુ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "વેબ પરીક્ષક" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "સંકળાયેલ WebKitWebInspector વસ્તુ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "સંપાદકીય" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "શું વપરાશકર્તા દ્વારા સમાવિષ્ટો બદલી શકાશે" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "પારદર્શક" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "શું સમાવિષ્ટને પારદર્શક પાશ્વભાગ છે" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "નાનામોટાપણાનું સ્તર" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "સમાવિષ્ટનું નાનામોટાપણાનું સ્તર" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "સંપૂર્ણ સમાવિષ્ટ નાનામોટાપણું" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "શું નાનુંમોટું કરતી વખતે સંપૂર્ણ સમાવિષ્ટ ખેંચાય છે" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "સંગ્રહપદ્ધતિ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "વેબ દેખાવનું મૂળભૂત એનકોડીંગ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "વૈવિધ્યપૂર્ણ એનકોડીંગ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "વેબ દેખાવનું વૈવિધ્યપૂર્ણ એનકોડીંગ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "ચિહ્ન URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "#WebKitWebView માટે favicon માટે URI." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "જમા કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "પુનઃસુયોજીત કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "ફાઈલ પસંદ કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(કંઈ નહિં)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "નવી વિન્ડોમાં કડી ખોલો (_W)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "કડી થયેલ ફાઈલ ડાઉનલોડ કરો (_D)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "કડી સ્થાનની નકલ કરો (_a)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "નવી વિન્ડોમાં ચિત્ર ખોલો (_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "ચિત્ર આ પ્રમાણે સંગ્રહો (_v)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "ચિત્રની નકલ કરો (_y)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "ચોકઠાંને નવી વિન્ડોમાં ખોલો (_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "પુનઃલાવો (_R)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "કોઈ ધારણાઓ મળી નહિં" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "જોડણી અવગણો (_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "જોડણી શીખો (_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "વેબ શોધો (_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "શબ્દકોષમાં જુઓ (_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "કડી ખોલો (_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "વ્યાકરણ અવગણો (_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "જોડણી અને વ્યાકરણ (_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "જોડણી અને વ્યાકરણ બતાવો (_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "જોડણી અને વ્યાકરણ છુપાવો (_H)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "દસ્તાવેજ હમણાં ચકાસો (_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "લખતી વખતે જોડણી ચકાસો (_T)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "જોડણી સાથે વ્યાકરણ ચકાસો (_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "ફોન્ટ (_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "બાહ્ય રેખા (_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "ઘટકનું પરીક્ષણ કરો (_E)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "કોઈ છેલ્લી શોધો નથી" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "છેલ્લી શોધો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "છેલ્લી શોધો સાફ કરો (_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "પદ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "વ્યાખ્યા" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "દબાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "પસંદ કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "સક્રિયકૃત કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "ચકાસણી દૂર કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "ચકાસો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "કૂદો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " ફાઈલો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "અજ્ઞાત" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "લાવી રહ્યા છીએ..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "જીવંત પ્રસારણ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "અવાજ ઘટક નિયંત્રક" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "વીડિયો ઘટક નિયંત્રક" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "મૂંગુ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "મૂંગુ દૂર કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "વગાડો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "અટકાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "ચિત્રપટ સમય" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "સમયરેખા સરકપટ્ટી થમ્બ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "૩૦ સેકન્ડો પાછળ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "વાસ્તવિક સમયે જાવ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "પસાર થયેલ સમય" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "બાકી રહેલ સમય" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "પરિસ્થિતિ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "સંપૂર્ણ સ્ક્રીન" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "ઝડપી આગળ ધપાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "ઝડપી પાછા આવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "બંધ થયેલ કેપ્શનો બતાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "બંધ થયેલ કેપ્શનો છુપાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "અવાજ ઘટક વગાડવાના નિયંત્રણો અને પરિસ્થિતિ દર્શાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "વીડિયો ઘટક વગાડવાના નિયંત્રણો અને પરિસ્થિતિ દર્શાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "ઓડિયો ટ્રેક મૂંગા કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "ઓડિયો ટ્રેકનું મૂંગાપણું દૂર કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "વગાડવાનું શરૂ કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "વગાડવાનું અટકાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "ચિત્રપટ સમય સ્ક્રબર" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "ચિત્રપટ સમય સ્ક્રબર થમ્બ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "ચિત્રપટ સમય ૩૦ સેકન્ડો પાછળ લઈ જાવ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "સ્ટ્રીમીંગ ચિત્રપટને વાસ્તવિક સમયે લાવે" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "વર્તમાન ચિત્રપટ સમય સેકન્ડોમાં" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "બાકી રહેલ ચિત્રપટનો સમય સેકન્ડોમાં" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "વર્તમાન ચિત્રપટ પરિસ્થિતિ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "ઝડપથી પાછા પહોંચો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "ઝડપથી આગળ પહોંચો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "ચિત્રપટને સંપૂર્ણસ્ક્રીન પરિસ્થિતિમાં વગાડો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "બંધ કેપ્શનો દર્શાવવાનું શરૂ કરો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "બંધ કેપ્શનો દર્શાવવાનું અટકાવો" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "અવ્યાખ્યાયિત સમય" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "કિંમત ગુમ થયેલ છે" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "પ્રકાર બંધબેસતો નથી" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "ભાત બંધબેસતી નથી" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "ખૂબ લાંબુ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "range underflow" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "range overflow" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "પગલું બંધબેસતું નથી" + +#~ msgid "_Searchable Index" +#~ msgstr "શોધી શકાય તેવો અનુક્રમ (_S)" diff --git a/Source/WebKit/gtk/po/he.po b/Source/WebKit/gtk/po/he.po new file mode 100644 index 0000000..5359feb --- /dev/null +++ b/Source/WebKit/gtk/po/he.po @@ -0,0 +1,1096 @@ +# Hebrew translation for webkit. +# Copyright (C) 2010 webkit's COPYRIGHT HOLDER +# This file is distributed under the same license as the webkit package. +# Gil Osher <gilosher@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-02-16 18:03+0200\n" +"Last-Translator: Gil Osher <gilosher@gmail.com>\n" +"Language-Team: Hebrew <he@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "טען קובץ" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "שיטות _קלט" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "סימן LRM מ_שמאל לימין" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "סימן RLM מ_ימין לשמאל" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE _שיבוץ משמאל לימין" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE ש_יבוץ מימין לשמאל" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO _עקיפה משמאל לימין" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO ע_קיפה מימין לשמאל" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF ה_חזרת כיווניות" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _רווח ברוחב אפס" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _מחבר ברוחב אפס" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ מ_בטל חיבור ברוחב אפס" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "ה_כנס תו בקרה של יוניקוד" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "בקשת רשת" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "בקשת הרשת עבור הכתובת שיש להוריד" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "בקשת רשת" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "בקשת הרשת עבור הכתובת שיש להוריד" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "כתובת יעד" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "כתובת היעד אליה שומרים את הקובץ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "שם קובץ מומלץ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "שם הקובץ המומלץ כברירת מחדל כאשר שומרים" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "התקדמות" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "מציין את ההתקדמות הנוכחית של ההורדה" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "מצב" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "מציין את המצב הנוכחי של ההורדה" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "גודל נוכחי" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "אורך המידע שכבר הורד" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "גודל כללי" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "הגודל הכללי של הקובץ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "משתמש ביטל את ההורדה" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "שם משתמש וסיסמה נדרשים על-ידי האתר %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "שם משתמש:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "סיסמה:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "זכור את הסיסמה" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "שם" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "שם המסגרת" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "כותרת" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "כותרת המסמך של המסגרת" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "כתובת" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "הכתובת הנוכחית של התוכן המוצג במסגרת" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "מציין את ההתקדמות הנוכחית של ההורדה" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "מציין את ההתקדמות הנוכחית של ההורדה" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "כותרת פריט ההסטוריה" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "כותרת חלופית" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "כותרת חלופית לפריט ההסטוריה" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "כתובת פריט ההסטוריה" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "כתובת מקורית" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "הכתובת המקורית של פריט ההסטוריה" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "זמן ביקור אחרון" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "הזמן בו בוקר לאחרונה פריט ההסטוריה" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "תצוגת Web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "תצוגת ה Web שמחולל בוחן ה Web בעצמו" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "כתובת נבחנת" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "הכתובת שנבנחנת כרגע" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "אפשר אפיון JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "מאפיין את ה JavaScript המורץ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "אפשר אפיון JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "סיבה" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "הסיבה מדוע ניווט זה מתרחש" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "הכתובת שנדרשה כמטרת הניווט" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "כפתור" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "הכפתור ששימש ללחיצה" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "מצב מקשי הבקרה" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "מסכת סיביות המייצגת את המצב של מקשי הבקרה" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "שם המסגרת" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "הכתובת שנדרשה כמטרת הניווט" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "קידוד ברירת מחדל" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "קידוד ברירת המחדל להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "משפחת הגופנים מסוג Cursive" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "משפחת הגופנים מסוג Cursive ברירת מחדל המשמשים להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "משפחת גופנים ברירת מחדל" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "משפחת הגופנים לשימוש בהצגת טקסט כברירת מחדל." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "משפחת הגופנים מסוג Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "משפחת הגופנים מסוג Fantasy ברירת מחדל המשמשים להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "משפחת הגופנים מסוג Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "משפחת הגופנים מסוג Monospace ברירת מחדל המשמשים להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "משפחת הגופנים מסוג Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "משפחת הגופנים מסוג Sans Serif ברירת מחדל המשמשים להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "משפחת הגופנים מסוג Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "משפחת הגופנים מסוג Serif ברירת מחדל המשמשים להצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "גודל גופן ברירת מחדל" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "גודל הגופן לשימוש בהצגת טקסט כברירת מחדל." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "גודל גופן Monospace ברירת מחדל" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "גודל גופן ברירת מחדל לשימוש בהצגת טקסט בגופן Monospace." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "גודל גופן מינימאלי" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "גודל הגופן המינימאלי לשימוש בהצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "גודל גופן לוגי מינימאלי" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "גודל הגופן הלוגי המינימאלי לשימוש בהצגת טקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "הכרח 96 נקודות לאינץ'" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "הכרח רזולוציה של 96 נקודות לאינץ'" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "טען תמונות אוטומטית" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "טוען תמונות אוטומטית." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "כווץ תמונות אוטומטית" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "אוטומטית מכווץ תמונות בודדות על-מנת שיתאימו." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "הדפס רקעים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "האם תמונות הרקע צריכות להיות מודפסות." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "אפשר תסריטים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "אפשר שפות תסריטים מוטבעות" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "אפשר תוספים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "אפשר אובייקטי תוסף מוטבעים." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "אזורי טקסט שניתן לשנות את גודלם" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "האם לאפשר את שינוי הגודל של אזורי הטקסט." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "כתבות גיליון הסגנון של המשתמש" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "כתובת גיליון הסגנון שמוחל על כל עמוד." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "ערך צעדי הקירוב" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "הערך בו רמת הקירוב משתנה כאשר מתקרבים או מתרחקים." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "אפשר תוספות למפתחים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "מאפשר תוספות מיוחדות שיעזרו למפתחים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "אפשר גלישה פרטית" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "מאפשר את מצב הגלישה הפרטית" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "בדוק איות בזמן ה_קלדב" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "אפשר גלישה פרטית" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "אפשר תסריטים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "אפשר תסריטים" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "האם תמונות הרקע צריכות להיות מודפסות." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "אפשר אפיון JavaScript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "מחזיר את כותרת המסמך של @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "מחזיר את הכתובת הנוכחית של התוכן המוצג על-ידי @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "העתק רשימת יעדים" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "רשימת היעדים בהם תצוגת ה-Web תומכת להעתקה ללוח" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "הדבק רשימת יעדים" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "רשימת היעדים בהם תצוגת ה-Web תומכת להדבקה מהלוח" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "הגדרות" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "מופע WebKitWebSettings משויך" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "בוחן Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "מופע ה-WebKitWebInspector המשויך" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "ניתן לעריכה" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "האם התוכן יכול להשתנות על-ידי המשתמש" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "שקוף" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "האם לתוכן יש רקע שקוף" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "רמת קירוב" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "רמת הקירוב של התוכן" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "קירוב תוכן מלא" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "האם התוכן המלא מתרחב כאשר מתקרבים" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "קידוד" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "הקידוד ברירת המחדל של תצוגת ה-Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "קידוד מותאם אישית" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "הקידוד המותאם אישית של תצוגת ה-Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "שלח" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "נקה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "בחר קובץ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(ללא)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "פתח קישור בח_לון חדש" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_הורד קובץ קשור" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "העתק את _מיקום הקישור" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "פתח _תמונה בחלון חדש" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "_שמור תמונה בשם" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "ה_עתק תמונה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "פתח מ_סגרת בחלון חדש" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_טען מחדש" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "לא נמצאו ניחושים" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "ה_תעלם מאיות" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_למד איות" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_חפש ב-Web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "חפ_ש במילון" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_פתח קישור" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "התעלם מ_דקדוק" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "איות ו_דקדוק" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "ה_צג איות ודקדוק" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "ה_סתר איות ודקדוק" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_בדוק מסמך כעת" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "בדוק איות בזמן ה_קלדב" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "בדוק _דקדוק בזמן הקלדה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_גופן" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "ה_דגשה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "בחן _אלמנט" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "אין חיפושים אחרונים" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "חיפושים אחרונים" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_נקה חיפושים אחרונים" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "מושג" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "הגדרה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "לחץ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "בחר" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "הפעל" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "בטל סימון" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "סמן" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "קפוץ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " קבצים" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "לא ידוע" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "מצב" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "הגדרה" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "אינקדס ניתן ל_חיפוש" diff --git a/Source/WebKit/gtk/po/it.po b/Source/WebKit/gtk/po/it.po new file mode 100644 index 0000000..6d6f0ac --- /dev/null +++ b/Source/WebKit/gtk/po/it.po @@ -0,0 +1,1171 @@ +# This is the Italian locale translation for WebKitGtk +# Copyright (C) 2009 Free Software Foundation, Inc. +# Luca Ferretti <lferrett@gnome.org>, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: WebKitGtk\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-18 22:13+0100\n" +"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n" +"Language-Team: Italian <tp@lists.linux.it>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Carica file" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Met_odi di input" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM - Contrassegno _sinistra-destra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM - Contrassegno _destra-sinistra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE - _Inserimento sinistra-destra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE - I_nserimento destra-sinistra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO - _Forza sinistra-destra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO - F_orza destra-sinistra" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF - Ca_ttura formattazione direzionale" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS - Spa_zio a larghezza nulla" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ - Spazio di _unione a larghezza nulla" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ - Spazio non di unione a _larghezza nulla" + +# merge da gtk +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "Inserisci carattere di controllo _Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Richiesta di rete" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "La richiesta di rete per l'URI che dovrebbe essere scaricato" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Risposta di rete" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "La risposta di rete per l'URI che dovrebbe essere scaricato" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI di destinazione" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "L'URI di destinazione in cui salvare il file" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Nome file suggerito" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Il nome di file suggerito come predefinito quando si salva" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Avanzamento" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determina l'avanzamento corrente dello scaricamento" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Stato" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determina lo stato corrente dello scaricamento" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Dimensione corrente" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "La lunghezza dei dati già scaricati" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Dimensione totale" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "La dimensione totale del file" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "L'utente ha annullato lo scaricamento" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Il sito %s richiede un nome utente e una password" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Messaggio del server:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Nome utente:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Password:" + +# checkbox +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Ricordare la password" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Nome" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Il nome della cornice" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Titolo" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Il titolo del documento nella cornice" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "L'URI corrente del contenuto mostrato dalla cornice" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Politica barra scorrimento orizzontale" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Determina la politica attuale per la barra di scorrimento orizzontale della " +"cornice." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Politica barra scorrimento verticale" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Determina la politica attuale per la barra di scorrimento verticale del " +"cornice." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Il titolo dell'elemento di cronologia" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Titolo alternativo" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Il titolo alternativo dell'elemento di cronologia" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "L'URI dell'elemento di cronologia" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI originale" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "L'URI originale dell'elemento di cronologia" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Data ultima visita" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "" +"La data in cui l'elemento di cronologia è stato visitato l'ultima volta" + +# lasciato non tradotto perchè termine interno di WebKitGtk +# cfr http://webkitgtk.org/reference/webkitgtk-WebKitWebInspector.html#WebKitWebInspector--web-view +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Web View" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "La Web View che esegue il rendering dell'Ispettore web stesso" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI ispezionato" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "L'URI che attualmente è ispezionato" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Abilita profiling JavaScript" + +# FIXME +# oppure Esegue il profiling? +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Traccia un profilo del codice JavaScript eseguito." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Abilita profiling Timeline" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Traccia un profilo della strumentazione WebCore." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Motivo" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Il motivo per cui questa navigazione si sta verificando" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "L'URI che è stata richiesta come destinazione della navigazione" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Pulsante" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Il pulsante usato per fare clic" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Stato modificatori" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Una maschera di bit che rappresenta lo stato dei tasti modificatori" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Cornice destinazione" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "La cornice di destinazione per la navigazione" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Codifica predefinita" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "La codifica predefinita usata per mostrare il testo." + +# NdT: in questa e nelle seguenti è usata le seguente convenzione +# * nella "breve" si usa carattere, nella "lunga" tipo di carattere +# * nella "breve" si lascia la forma inglese (es. sans serif) nella lunga +# si mette la forma italiana (es. senza grazie) +# Ciò per mantenere corte le "brevi" e per permettere che entrambe le diciture siano presenti +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Famiglia carattere corsivo" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "" +"La famiglia del tipo di carattere \"corsivo\" predefinito usata per mostrare " +"il testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Famiglia carattere predefinita" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "" +"La famiglia del tipo di carattere predefinito usata per mostrare il testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Famiglia carattere fantasia" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "" +"La famiglia del tipo di carattere \"fantasia\" predefinito usata per " +"mostrare il testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Famiglia carattere monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" +"La famiglia del tipo di carattere predefinito usata per mostrare il testo a " +"spaziatura fissa." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Famiglia carattere sans serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" +"La famiglia del tipo di carattere \"senza grazie\" predefinito usata per " +"mostrare il testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Famiglia carattere serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "" +"La famiglia del tipo di carattere \"con grazie\" predefinito usata per " +"mostrare il testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Dimensione predefinita carattere" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "" +"La dimensione predefinita per il tipo di carattere usato per mostrare il " +"testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Dimensione predefinita carattere monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" +"La dimensione predefinita per il tipo di carattere usato per mostrare il " +"testo a larghezza fissa." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Dimensione minima carattere" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "" +"La dimensione minima per il tipo di carattere usato per mostrare il testo." + +# Dalla documentazione apple per WebKit.framwork +# +# The font size for a web view is different than its logical font size. The minimum logical font +# size, for example, is the absolute minimum size at which the font will display onscreen. This is +# meant to be a functional boundary and not a style boundary. For example, the default value for a +# web view’s minimum logical font size is 9 points, because typical web content looks good on +# Mac OS X at font sizes of 9 point and above. The constraint assures that web content will always +# look good in a web view. If you know that your content will look good only at 12 points or +# above, you should change the minimum font size to 12 points and leave the minimum logical font +# size alone. This will assure that your content will never display at sizes less than 12 points, +# but the functional font size boundary of the web view will remain at 9 points to prevent any +# chance of displaying unnecessarily small text. +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Dimensione minima naturale carattere" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "" +"La dimensione minima naturale per il tipo di carattere usato per mostrare il " +"testo." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Forza 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Forza la risoluzione a 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Caricamento automatico immagini" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Carica le immagini in modo automatico." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Restringimento automatico immagini" + +# assolutamente libertario +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Restringe automaticamente le immagini singole alla dimensione adatta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Stampa sfondi" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Indica se le immagini di sfondo devono essere stampate." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Abilita script" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Abilita i linguaggi di scripting incorporati." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Abilita plugin" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Abilita gli oggetti plugin incorporati." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Aree testo ridimensionabili" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Indica se le aree di testo sono ridimensionabili." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI foglio stile utente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "L'URI di un foglio di stile che è applicato a ogni pagina." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Valore passo ingrandimento" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"Il valore di variazione del livello di ingrandimento quando si aumenta o " +"riduce l'ingrandimento." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Abilita extra per sviluppatori" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Abilita estensioni speciali che sono d'aiuto per gli sviluppatori" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Abilita navigazione privata" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Abilita la modalità di navigazione privata" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Abilita controllo ortografico" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Abilita il controllo ortografico durante la digitazione" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Lingue da usare per controllo ortografico" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Elenco separato da virgole delle lingue da usare per il controllo ortografico" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Abilita navigazione con cursore" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Indica se abilitare la navigazione da tastiera ottimizzata per " +"l'accessibilità" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Abilita Database HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Indica se abilitare il supporto ai database di HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Abilita Local Storage HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Indica se abilitare il supporto a local storage di HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Abilita auditor XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Indica se abilitare l'auditor XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "User Agent" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "La stringa User-Agent usata da WebKitGtk" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript può aprire automatamente le fineste" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Indica se JavaScript può aprire automatamente le fineste" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Abilita cache per applicazioni web fuori rete" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Indica se abilitare la cache per le applicazioni web fuori rete" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Comportamento editing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "La modalità di comportamento da usare in modalità editing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Abilita accesso univesale dagli URI di file" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Indica se abilitare l'accesso univesale dagli URI di file" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Abilita DOM pasting" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Indica se abilitare il DOM pasting" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tasto TAB per passare tra gli elementi" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" +"Indica se il tasto TAB permette di passare ciclicamente tra gli elementi " +"della pagina." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Abilita menù contestuale predefinito" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Abilita la gestione dei clic destri per la creazione del menù contestuale " +"predefinito" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Abilita scappatoie specifiche per siti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" +"Abilita delle correzioni di compatibilità specifiche per determinati siti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Abilita la cache di pagina" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Indica se usare la cache delle pagine" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Ridimensionamento automatico finestra" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Ridimensiona automaticamente la finestra di livello principale quando " +"richiesto da una pagina" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Abilita applet Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Indica se abilitare il supporto alle applet Java attraverso <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Restituisce il titolo del documento di @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Restituisce l'URI attuale del contenuto mostrato dalla @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Copia elenco destinazioni" + +# ma ha senso?? +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"L'elenco di destinazioni che questa vista web supporta per copiare negli " +"appunti" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Incolla elenco destinazioni" + +# ma ha senso?? +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"L'elenco di destinazioni che questa vista web supporta per incollare dagli " +"appunti" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Impostazioni" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Un'istanza WebKitWebSettings associata" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Ispettore web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "L'istanza WebKitWebInspector associata" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Modificabile" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Indica se il contenuto può essere modificato dall'utente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Trasparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Indica se il contenuto ha uno sfondo trasparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Livello ingrandimento" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Il livello di ingrandimento del contenuto" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Ingrandimento intero contenuto" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Indica se all'ingrandimento viene scalato l'intero contenuto" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Codifica" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "La codifica predefinita della vista web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Codifica personalizzata" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "La codifica personalizzata della vista web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "URI di icona" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "L'URI per la favicon della #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Invia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Azzera" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" +"Questo indice consente ricerche. Inserire la parole chiave da cercare: " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Scelta file" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Nessuno)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Apri collegamento in nuova _finestra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Scarica file collegato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Copia _posizione collegamento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Apri _immagine in nuova finestra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Sal_va immagine come" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Copia i_mmagine" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Apri c_ornice in nuova finestra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "A_ggiorna" + +# omesso Found +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Nessun suggerimento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignora ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "A_pprendi ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Cerca nel web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Consu_lta dizionario" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Apri collegamento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignora _grammatica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Ortografia e _grammatica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Mostra ortografia e grammatica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Nascondi ortografia e grammatica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Controlla documento ora" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Controlla ortografia durante _digitazione" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Controlla _grammatica con ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Tipo di carattere" + +# È riferita alla funzione contextMenuItemTagOutline() +# che appare assieme ad altre per bold, italic e underline. +# Le traduzioni di questi ultimi tre effetti per i font è presa +# dalle GTK_STOCK (_Grassetto, _Corsivo, _Sottolineato) +# Usato Co_ntorno come in OpenOffice.org +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "Co_ntorno" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Ispeziona _elemento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Nessuna ricerca recente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Ricerche recenti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "Pu_lisci ricerche recenti" + +# String AXDefinitionListTermText() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "termine" + +# String AXDefinitionListDefinitionText() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definizione" + +# String AXButtonActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "premi" + +# String AXRadioButtonActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "seleziona" + +# String AXTextFieldActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "attiva" + +# String AXCheckedCheckBoxActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "togli spunta" + +# String AXUncheckedCheckBoxActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "metti spunta" + +# String AXLinkActionVerb() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "salta" + +# String multipleFileUploadText(unsigned numberOfFiles) +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " file" + +# String unknownFileSizeText() +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Sconosciuta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Caricamento..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Diffusione live" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "controllore elemento audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "controllore elemento video" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "escludi audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "abilita audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "riproduci" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pausa" + +# name == "Slider" +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "tempo filmato" + +# name == "SliderThumb" +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "cursore dello scorrevole per linea temporale" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "indietro 30 secondi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "ritorna a tempo effettivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "tempo trascorso" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "tempo rimanente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "stato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "schermo intero" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "avanti veloce" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "indietro veloce" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "mostra sottotitoli" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "nascondi sottotitoli" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "controlli di riproduzione e visualizzazione stato di elementi audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "controlli di riproduzione e visualizzazione stato di elementi video" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "escludi tracce audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "abilita tracce audio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "inizia la riproduzione" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "mette in pausa la riproduzione" + +# non so se è corretto... per induzione dovrebbe +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "cambia con trascinamento il tempo del filmato" + +# non so se è corretto... per induzione dovrebbe +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "cursore per cambiare con trascinamento il tempo del filmato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "posiziona il filmato indietro di 30 secondi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "riporta il filmato in streaming al tempo reale" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "tempo corrente del filmato in secondi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "numero di secondi rimanenti del filmato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "stato attuale del filmato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "posiziona indietro rapidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "posiziona avanti rapidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Riproduce il filmato in modalità schermo intero" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "avvia la visualizzazione dei sottotitoli" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "interrompe la visualizzazione dei sottotitoli" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "tempo indefinito" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "valore mancante" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "discrepanza di tipo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "discrepanza di modello" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "troppo lungo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "superamento limite inferiore dell'intervallo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "superamento limite superiore dell'intervallo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "discrepanza di passo" diff --git a/Source/WebKit/gtk/po/ko.po b/Source/WebKit/gtk/po/ko.po new file mode 100644 index 0000000..4d45f18 --- /dev/null +++ b/Source/WebKit/gtk/po/ko.po @@ -0,0 +1,1382 @@ +# Korean translation for webkit. +# This file is distributed under the same license as the webkit package. +# +# Changwoo Ryu <cwryu@debian.org>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org\n" +"POT-Creation-Date: 2010-09-22 03:26+0000\n" +"PO-Revision-Date: 2010-09-26 00:38+0900\n" +"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" +"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n" +"Language: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../WebCoreSupport/ChromeClientGtk.cpp:569 +msgid "Upload File" +msgstr "파일 업로드" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:194 +msgid "Input _Methods" +msgstr "입력기(_M)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM 왼쪽에서-오른쪽으로 표시(_L)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM 오른쪽에서-왼쪽으로 표시(_R)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE 왼쪽에서-오른쪽으로 임베딩(_E)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE 오른쪽에서-왼쪽으로 임베딩(_M)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO 왼쪽에서-오른쪽으로 번복(_O)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO 오른쪽에서-왼쪽으로 번복(_V)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF 방향 형식 팝(pop)하기(_P)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS 너비 0 공백(_Z)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ 너비 0 결합(_J)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ 너비 0 결합 금지(_N)" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:189 +msgid "_Insert Unicode Control Character" +msgstr "유니코드 제어 문자 넣기(_I)" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1140 +msgid "Load request cancelled" +msgstr "읽어들이기 요청 취소" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1146 +msgid "Not allowed to use restricted network port" +msgstr "제한된 네트워크 포트 사용을 허용하지 않습니다" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1152 +msgid "URL cannot be shown" +msgstr "URL를 표시할 수 없습니다" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1158 +msgid "Frame load was interrupted" +msgstr "프레임 읽어들이기가 중지되었습니다" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1164 +msgid "Content with the specified MIME type cannot be shown" +msgstr "지정한 MIME 형식의 컨텐트를 표시할 수 없습니다" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1170 +msgid "File does not exist" +msgstr "파일이 없습니다" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1176 +msgid "Plugin will handle load" +msgstr "플러그인이 읽어들이기를 처리합니다" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:386 +msgid "Play" +msgstr "재생" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:388 +msgid "Pause" +msgstr "일시 중지" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:534 +msgid "Play / Pause" +msgstr "재생 / 일시 중지" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:534 +msgid "Play or pause the media" +msgstr "미디어를 재생 또는 일시 중지합니다" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:542 +msgid "Time:" +msgstr "시간:" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:566 +msgid "Exit Fullscreen" +msgstr "전체 화면 끝내기" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:566 +msgid "Exit from fullscreen mode" +msgstr "전체 화면 모드 끝내기" + +#: ../webkit/webkitdownload.cpp:272 +msgid "Network Request" +msgstr "네트워크 요청" + +#: ../webkit/webkitdownload.cpp:273 +msgid "The network request for the URI that should be downloaded" +msgstr "다운로드할 URI의 네트워크 요청" + +#: ../webkit/webkitdownload.cpp:287 +msgid "Network Response" +msgstr "네트워크 응답" + +#: ../webkit/webkitdownload.cpp:288 +msgid "The network response for the URI that should be downloaded" +msgstr "다운로드할 URI의 네트워크 응답" + +#: ../webkit/webkitdownload.cpp:302 +msgid "Destination URI" +msgstr "저장 URI" + +#: ../webkit/webkitdownload.cpp:303 +msgid "The destination URI where to save the file" +msgstr "파일을 저장할 위치의 URI" + +#: ../webkit/webkitdownload.cpp:317 +msgid "Suggested Filename" +msgstr "파일 이름 제안" + +#: ../webkit/webkitdownload.cpp:318 +msgid "The filename suggested as default when saving" +msgstr "저장할 때 기본으로 제안할 파일 이름" + +#: ../webkit/webkitdownload.cpp:335 +msgid "Progress" +msgstr "진행률" + +#: ../webkit/webkitdownload.cpp:336 +msgid "Determines the current progress of the download" +msgstr "다운로드의 현재 진행률" + +#: ../webkit/webkitdownload.cpp:349 +msgid "Status" +msgstr "상태" + +#: ../webkit/webkitdownload.cpp:350 +msgid "Determines the current status of the download" +msgstr "다운로드의 현재 상태" + +#: ../webkit/webkitdownload.cpp:365 +msgid "Current Size" +msgstr "현재 크기" + +#: ../webkit/webkitdownload.cpp:366 +msgid "The length of the data already downloaded" +msgstr "지금까지 다운로드한 데이터의 길이" + +#: ../webkit/webkitdownload.cpp:380 +msgid "Total Size" +msgstr "전체 크기" + +#: ../webkit/webkitdownload.cpp:381 +msgid "The total size of the file" +msgstr "파일의 전체 크기" + +#: ../webkit/webkitdownload.cpp:533 +msgid "User cancelled the download" +msgstr "사용자가 다운로드를 취소했습니다" + +#: ../webkit/webkithittestresult.cpp:148 +msgid "Context" +msgstr "컨텍스트" + +#: ../webkit/webkithittestresult.cpp:149 +msgid "Flags indicating the kind of target that received the event." +msgstr "이벤트를 받는 대상의 종류를 나타내는 플래그." + +#: ../webkit/webkithittestresult.cpp:163 +msgid "Link URI" +msgstr "링크 URI" + +#: ../webkit/webkithittestresult.cpp:164 +msgid "The URI to which the target that received the event points, if any." +msgstr "이벤트 포인트를 받는 대상의 URI (있다면)." + +#: ../webkit/webkithittestresult.cpp:177 +msgid "Image URI" +msgstr "그림 URI" + +#: ../webkit/webkithittestresult.cpp:178 +msgid "" +"The URI of the image that is part of the target that received the event, if " +"any." +msgstr "이벤트를 받는 대상에 들어 있는 그림 URI (있다면)." + +#: ../webkit/webkithittestresult.cpp:191 +msgid "Media URI" +msgstr "미디어 URI" + +#: ../webkit/webkithittestresult.cpp:192 +msgid "" +"The URI of the media that is part of the target that received the event, if " +"any." +msgstr "이벤트를 받는 대상에 들어 있는 미디어 URI (있다면)." + +#: ../webkit/webkithittestresult.cpp:213 +msgid "Inner node" +msgstr "내부 노드" + +#: ../webkit/webkithittestresult.cpp:214 +msgid "The inner DOM node associated with the hit test result." +msgstr "히트 테스트 결과와 관련된 내부 DOM 노드." + +#: ../webkit/webkitnetworkrequest.cpp:136 +#: ../webkit/webkitnetworkresponse.cpp:134 ../webkit/webkitwebframe.cpp:315 +#: ../webkit/webkitwebhistoryitem.cpp:178 ../webkit/webkitwebresource.cpp:126 +#: ../webkit/webkitwebview.cpp:2603 +msgid "URI" +msgstr "URI" + +#: ../webkit/webkitnetworkrequest.cpp:137 +msgid "The URI to which the request will be made." +msgstr "요청을 할 URI." + +#: ../webkit/webkitnetworkrequest.cpp:150 +#: ../webkit/webkitnetworkresponse.cpp:148 +msgid "Message" +msgstr "메시지" + +#: ../webkit/webkitnetworkrequest.cpp:151 +msgid "The SoupMessage that backs the request." +msgstr "요청이 들어 있는 SoupMessage." + +#: ../webkit/webkitnetworkresponse.cpp:135 +msgid "The URI to which the response will be made." +msgstr "응답을 할 URI." + +#: ../webkit/webkitnetworkresponse.cpp:149 +msgid "The SoupMessage that backs the response." +msgstr "응답이 들어 있는 SoupMessage." + +#: ../webkit/webkitsecurityorigin.cpp:151 +msgid "Protocol" +msgstr "프로토콜" + +#: ../webkit/webkitsecurityorigin.cpp:152 +msgid "The protocol of the security origin" +msgstr "보안 원본의 프로토콜" + +#: ../webkit/webkitsecurityorigin.cpp:165 +msgid "Host" +msgstr "호스트" + +#: ../webkit/webkitsecurityorigin.cpp:166 +msgid "The host of the security origin" +msgstr "보안 원본의 호스트" + +#: ../webkit/webkitsecurityorigin.cpp:179 +msgid "Port" +msgstr "포트" + +#: ../webkit/webkitsecurityorigin.cpp:180 +msgid "The port of the security origin" +msgstr "보안 원본의 포트" + +#: ../webkit/webkitsecurityorigin.cpp:193 +msgid "Web Database Usage" +msgstr "웹 데이터베이스 사용" + +#: ../webkit/webkitsecurityorigin.cpp:194 +msgid "The cumulative size of all web databases in the security origin" +msgstr "보안 원본의 웹 데이터베이스 총 크기" + +#: ../webkit/webkitsecurityorigin.cpp:206 +msgid "Web Database Quota" +msgstr "웹 데이터베이스 제한 용량" + +#: ../webkit/webkitsecurityorigin.cpp:207 +msgid "The web database quota of the security origin in bytes" +msgstr "보안 원본의 웹 데이터베이스 제한 용량, 바이트 단위" + +#: ../webkit/webkitsoupauthdialog.c:251 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "사용자 이름과 암호를 %s 사이트에서 요청했습니다" + +#: ../webkit/webkitsoupauthdialog.c:281 +msgid "Server message:" +msgstr "서버 메시지:" + +#: ../webkit/webkitsoupauthdialog.c:294 +msgid "Username:" +msgstr "사용자 이름:" + +#: ../webkit/webkitsoupauthdialog.c:296 +msgid "Password:" +msgstr "암호:" + +#: ../webkit/webkitsoupauthdialog.c:305 +msgid "_Remember password" +msgstr "암호 저장(_R)" + +#: ../webkit/webkitwebdatabase.cpp:176 +msgid "Security Origin" +msgstr "보안 원본" + +#: ../webkit/webkitwebdatabase.cpp:177 +msgid "The security origin of the database" +msgstr "데이터베이스의 보안 원본" + +#: ../webkit/webkitwebdatabase.cpp:190 ../webkit/webkitwebframe.cpp:301 +msgid "Name" +msgstr "이름" + +#: ../webkit/webkitwebdatabase.cpp:191 +msgid "The name of the Web Database database" +msgstr "웹 데이터베이스의 이름" + +#: ../webkit/webkitwebdatabase.cpp:204 +msgid "Display Name" +msgstr "표시할 이름" + +#: ../webkit/webkitwebdatabase.cpp:205 +msgid "The display name of the Web Storage database" +msgstr "웹 저장 데이터베이스의 표시할 이름" + +#: ../webkit/webkitwebdatabase.cpp:218 +msgid "Expected Size" +msgstr "예상 크기" + +#: ../webkit/webkitwebdatabase.cpp:219 +msgid "The expected size of the Web Database database" +msgstr "웹 데이터베이스의 예상 크기" + +#: ../webkit/webkitwebdatabase.cpp:231 +msgid "Size" +msgstr "크기" + +#: ../webkit/webkitwebdatabase.cpp:232 +msgid "The current size of the Web Database database" +msgstr "웹 데이터베이스의 현재 크기" + +#: ../webkit/webkitwebdatabase.cpp:244 +msgid "Filename" +msgstr "파일 이름" + +#: ../webkit/webkitwebdatabase.cpp:245 +msgid "The absolute filename of the Web Storage database" +msgstr "웹 저장 데이터베이스의 절대 경로 파일 이름" + +#: ../webkit/webkitwebframe.cpp:302 +msgid "The name of the frame" +msgstr "프레임의 이름" + +#: ../webkit/webkitwebframe.cpp:308 ../webkit/webkitwebhistoryitem.cpp:146 +#: ../webkit/webkitwebview.cpp:2589 +msgid "Title" +msgstr "제목" + +#: ../webkit/webkitwebframe.cpp:309 +msgid "The document title of the frame" +msgstr "프레임의 문서 제목" + +#: ../webkit/webkitwebframe.cpp:316 +msgid "The current URI of the contents displayed by the frame" +msgstr "현재 프레임이 표시하는 내용의 URI" + +#: ../webkit/webkitwebframe.cpp:347 +msgid "Horizontal Scrollbar Policy" +msgstr "가로 스크롤 막대 정책" + +#: ../webkit/webkitwebframe.cpp:348 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "프레임의 가로 스크롤 막대에 대한 현재 정책." + +#: ../webkit/webkitwebframe.cpp:365 +msgid "Vertical Scrollbar Policy" +msgstr "세로 스크롤 막대 정책" + +#: ../webkit/webkitwebframe.cpp:366 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "프레임의 세로 스크롤 막대에 대한 현재 정책." + +#: ../webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "기록 항목의 제목" + +#: ../webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "다른 제목" + +#: ../webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "기록 항목의 다른 제목" + +#: ../webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "기록 항목의 URI" + +#: ../webkit/webkitwebhistoryitem.cpp:194 +#: ../webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "원래 URI" + +#: ../webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "기록 항목의 원래 URI" + +#: ../webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "최근 방문 시각" + +#: ../webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "기록 항목을 최근 방문한 시각" + +#: ../webkit/webkitwebinspector.cpp:269 +msgid "Web View" +msgstr "웹 뷰" + +#: ../webkit/webkitwebinspector.cpp:270 +msgid "The Web View that renders the Web Inspector itself" +msgstr "웹 점검 자체를 렌더링할 웹 뷰" + +#: ../webkit/webkitwebinspector.cpp:283 +msgid "Inspected URI" +msgstr "점검할 URI" + +#: ../webkit/webkitwebinspector.cpp:284 +msgid "The URI that is currently being inspected" +msgstr "현재 점검하고 있는 URI" + +#: ../webkit/webkitwebinspector.cpp:300 +msgid "Enable JavaScript profiling" +msgstr "자바스크립트 프로파일링 사용" + +#: ../webkit/webkitwebinspector.cpp:301 +msgid "Profile the executed JavaScript." +msgstr "실행하는 자바스크립트를 프로파일링합니다." + +#: ../webkit/webkitwebinspector.cpp:316 +msgid "Enable Timeline profiling" +msgstr "시간별 프로파일링 사용" + +#: ../webkit/webkitwebinspector.cpp:317 +msgid "Profile the WebCore instrumentation." +msgstr "WebCore 기능을 프로파일링합니다." + +#: ../webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "이유" + +#: ../webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "이 네비게이션이 이루어지는 이유" + +#: ../webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "네비게이션의 대상으로 요청한 URI" + +#: ../webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "단추" + +#: ../webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "마우스로 누를 수 있는 단추" + +#: ../webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "조합키 상태" + +#: ../webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "조합키 상태를 나타내는 비트마스크" + +#: ../webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "대상 프레임" + +#: ../webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "네비게이션 대상 프레임" + +#: ../webkit/webkitwebresource.cpp:127 +msgid "The uri of the resource" +msgstr "자원의 URI" + +#: ../webkit/webkitwebresource.cpp:141 +msgid "MIME Type" +msgstr "MIME 형식" + +#: ../webkit/webkitwebresource.cpp:142 +msgid "The MIME type of the resource" +msgstr "자원의 MIME 형식" + +#: ../webkit/webkitwebresource.cpp:156 ../webkit/webkitwebview.cpp:2724 +msgid "Encoding" +msgstr "인코딩" + +#: ../webkit/webkitwebresource.cpp:157 +msgid "The text encoding name of the resource" +msgstr "자원의 텍스트 인코딩 이름" + +#: ../webkit/webkitwebresource.cpp:172 +msgid "Frame Name" +msgstr "프레임 이름" + +#: ../webkit/webkitwebresource.cpp:173 +msgid "The frame name of the resource" +msgstr "자원의 프레임 이름" + +#: ../webkit/webkitwebsettings.cpp:247 +msgid "Default Encoding" +msgstr "기본 인코딩" + +#: ../webkit/webkitwebsettings.cpp:248 +msgid "The default encoding used to display text." +msgstr "글을 표시할 때 사용할 기본 인코딩." + +#: ../webkit/webkitwebsettings.cpp:256 +msgid "Cursive Font Family" +msgstr "필기체 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:257 +msgid "The default Cursive font family used to display text." +msgstr "글을 표시할 때 사용할 기본 필기체 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:265 +msgid "Default Font Family" +msgstr "기본 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:266 +msgid "The default font family used to display text." +msgstr "글을 표시할 때 사용할 기본 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:274 +msgid "Fantasy Font Family" +msgstr "고어체 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:275 +msgid "The default Fantasy font family used to display text." +msgstr "글을 표시할 때 사용할 기본 고어체 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:283 +msgid "Monospace Font Family" +msgstr "고정폭 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:284 +msgid "The default font family used to display monospace text." +msgstr "글을 표시할 때 사용할 기본 고정폭 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:292 +msgid "Sans Serif Font Family" +msgstr "돋움체 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:293 +msgid "The default Sans Serif font family used to display text." +msgstr "글을 표시할 때 사용할 기본 돋움체 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:301 +msgid "Serif Font Family" +msgstr "바탕체 글꼴 계열" + +#: ../webkit/webkitwebsettings.cpp:302 +msgid "The default Serif font family used to display text." +msgstr "글을 표시할 때 사용할 기본 바탕체 글꼴 계열." + +#: ../webkit/webkitwebsettings.cpp:310 +msgid "Default Font Size" +msgstr "기본 글꼴 크기" + +#: ../webkit/webkitwebsettings.cpp:311 +msgid "The default font size used to display text." +msgstr "글을 표시할 때 사용할 기본 글꼴 크기." + +#: ../webkit/webkitwebsettings.cpp:319 +msgid "Default Monospace Font Size" +msgstr "기본 고정폭 글꼴 크기" + +#: ../webkit/webkitwebsettings.cpp:320 +msgid "The default font size used to display monospace text." +msgstr "글을 표시할 때 사용할 기본 고정폭 글꼴 크기." + +#: ../webkit/webkitwebsettings.cpp:328 +msgid "Minimum Font Size" +msgstr "최소 글꼴 크기" + +#: ../webkit/webkitwebsettings.cpp:329 +msgid "The minimum font size used to display text." +msgstr "글을 표시할 때 사용할 최소 글꼴 크기." + +#: ../webkit/webkitwebsettings.cpp:337 +msgid "Minimum Logical Font Size" +msgstr "최소 논리적 글꼴 크기" + +#: ../webkit/webkitwebsettings.cpp:338 +msgid "The minimum logical font size used to display text." +msgstr "글을 표시할 때 사용할 최소 논리적 글꼴 크기." + +#: ../webkit/webkitwebsettings.cpp:357 +msgid "Enforce 96 DPI" +msgstr "96 DPI 강제" + +#: ../webkit/webkitwebsettings.cpp:358 +msgid "Enforce a resolution of 96 DPI" +msgstr "해상도를 96 DPI로 강제" + +#: ../webkit/webkitwebsettings.cpp:366 +msgid "Auto Load Images" +msgstr "그림 읽어들이기 자동" + +#: ../webkit/webkitwebsettings.cpp:367 +msgid "Load images automatically." +msgstr "자동으로 그림을 읽어들입니다." + +#: ../webkit/webkitwebsettings.cpp:375 +msgid "Auto Shrink Images" +msgstr "그림 축소 자동" + +#: ../webkit/webkitwebsettings.cpp:376 +msgid "Automatically shrink standalone images to fit." +msgstr "자동으로 그림을 축소해서 크기에 맞춥니다." + +#: ../webkit/webkitwebsettings.cpp:384 +msgid "Print Backgrounds" +msgstr "배경 그림 인쇄" + +#: ../webkit/webkitwebsettings.cpp:385 +msgid "Whether background images should be printed." +msgstr "배경 그림을 인쇄할지 여부." + +#: ../webkit/webkitwebsettings.cpp:393 +msgid "Enable Scripts" +msgstr "스크립트 사용" + +#: ../webkit/webkitwebsettings.cpp:394 +msgid "Enable embedded scripting languages." +msgstr "내장 스크립트 언어를 사용합니다." + +#: ../webkit/webkitwebsettings.cpp:402 +msgid "Enable Plugins" +msgstr "플러그인 사용" + +#: ../webkit/webkitwebsettings.cpp:403 +msgid "Enable embedded plugin objects." +msgstr "내장 플러그인 오브젝트를 사용합니다." + +#: ../webkit/webkitwebsettings.cpp:411 +msgid "Resizable Text Areas" +msgstr "글 입력란 크기 조정 가능" + +#: ../webkit/webkitwebsettings.cpp:412 +msgid "Whether text areas are resizable." +msgstr "글 입력란이 크기 조정 가능한지 여부." + +#: ../webkit/webkitwebsettings.cpp:419 +msgid "User Stylesheet URI" +msgstr "사용자 설정 스타일시트 URI" + +#: ../webkit/webkitwebsettings.cpp:420 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "모든 페이지에 적용할 스타일시트의 URI." + +#: ../webkit/webkitwebsettings.cpp:435 +msgid "Zoom Stepping Value" +msgstr "확대/축소 단계 값" + +#: ../webkit/webkitwebsettings.cpp:436 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "확대나 축소할 때마다 바꿀 단계 값." + +#: ../webkit/webkitwebsettings.cpp:454 +msgid "Enable Developer Extras" +msgstr "개발자 추가 기능 사용" + +#: ../webkit/webkitwebsettings.cpp:455 +msgid "Enables special extensions that help developers" +msgstr "개발자에게 도움이 되는 특수 추가 기능을 사용합니다" + +#: ../webkit/webkitwebsettings.cpp:475 +msgid "Enable Private Browsing" +msgstr "사생활 보호 기능 사용" + +#: ../webkit/webkitwebsettings.cpp:476 +msgid "Enables private browsing mode" +msgstr "사생활 보호 브라우저 모드를 사용합니다" + +#: ../webkit/webkitwebsettings.cpp:491 +msgid "Enable Spell Checking" +msgstr "맞춤법 검사 사용" + +#: ../webkit/webkitwebsettings.cpp:492 +msgid "Enables spell checking while typing" +msgstr "입력할 때 맞춤법 검사 기능을 사용합니다" + +#: ../webkit/webkitwebsettings.cpp:515 +msgid "Languages to use for spell checking" +msgstr "맞춤법 검사에 사용할 언어" + +#: ../webkit/webkitwebsettings.cpp:516 +msgid "Comma separated list of languages to use for spell checking" +msgstr "맞춤법 검사에 사용할 언어의 목록, 쉼표로 구분" + +#: ../webkit/webkitwebsettings.cpp:530 +msgid "Enable Caret Browsing" +msgstr "캐럿 모드 사용" + +#: ../webkit/webkitwebsettings.cpp:531 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "키보드 네비게이션 기능을 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:546 +msgid "Enable HTML5 Database" +msgstr "HTML5 데이터베이스 사용" + +#: ../webkit/webkitwebsettings.cpp:547 +msgid "Whether to enable HTML5 database support" +msgstr "HTML5 데이터베이스 기능을 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:562 +msgid "Enable HTML5 Local Storage" +msgstr "HTML5 로컬 저장 공간 사용" + +#: ../webkit/webkitwebsettings.cpp:563 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "HTML5 로컬 저장 공간 기능을 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:577 +msgid "Enable XSS Auditor" +msgstr "XSS 검사 기능 사용" + +#: ../webkit/webkitwebsettings.cpp:578 +msgid "Whether to enable the XSS auditor" +msgstr "XSS 검사 기능을 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:596 +msgid "Enable Spatial Navigation" +msgstr "스페이셜 네비게이션 사용" + +#: ../webkit/webkitwebsettings.cpp:597 +#, fuzzy +msgid "Whether to enable Spatial Navigation" +msgstr "스페이셜 네비게이션을 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:614 +msgid "User Agent" +msgstr "User Agent" + +#: ../webkit/webkitwebsettings.cpp:615 +msgid "The User-Agent string used by WebKitGtk" +msgstr "WebKitGtk에서 사용할 User-Agent 문자열" + +#: ../webkit/webkitwebsettings.cpp:630 +msgid "JavaScript can open windows automatically" +msgstr "자바스크립트에서 창을 열 수 있음" + +#: ../webkit/webkitwebsettings.cpp:631 +msgid "Whether JavaScript can open windows automatically" +msgstr "자바스크립트에서 창을 열 수 있는지 여부" + +#: ../webkit/webkitwebsettings.cpp:645 +msgid "JavaScript can access Clipboard" +msgstr "자바스크립트에서 클립보드 접근 가능" + +#: ../webkit/webkitwebsettings.cpp:646 +msgid "Whether JavaScript can access Clipboard" +msgstr "자바스크립트에서 클립보드를 열 수 있는지 여부" + +#: ../webkit/webkitwebsettings.cpp:662 +msgid "Enable offline web application cache" +msgstr "오프라인 웹 프로그램 캐시 사용" + +#: ../webkit/webkitwebsettings.cpp:663 +msgid "Whether to enable offline web application cache" +msgstr "오프라인 웹 프로그램 캐시를 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:690 +msgid "Editing behavior" +msgstr "편집 방식" + +#: ../webkit/webkitwebsettings.cpp:691 +msgid "The behavior mode to use in editing mode" +msgstr "편집 모드에서 사용할 방식" + +#: ../webkit/webkitwebsettings.cpp:707 +msgid "Enable universal access from file URIs" +msgstr "file URI에서 일반 접근 사용" + +#: ../webkit/webkitwebsettings.cpp:708 +msgid "Whether to allow universal access from file URIs" +msgstr "file URI에서 일반 접근을 허용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:723 +msgid "Enable DOM paste" +msgstr "DOM 붙여넣기 사용" + +#: ../webkit/webkitwebsettings.cpp:724 +msgid "Whether to enable DOM paste" +msgstr "DOM 붙여넣기를 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:742 +msgid "Tab key cycles through elements" +msgstr "Tab 키로 엘리먼트 돌아보기" + +#: ../webkit/webkitwebsettings.cpp:743 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Tab 키로 페이지의 엘리먼트 돌아보는지 여부." + +#: ../webkit/webkitwebsettings.cpp:763 +msgid "Enable Default Context Menu" +msgstr "기본 팝업 메뉴 사용" + +#: ../webkit/webkitwebsettings.cpp:764 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "오른쪽 마우스 단추를 누를 때 기본 팝업 메뉴를 사용합니다" + +#: ../webkit/webkitwebsettings.cpp:784 +msgid "Enable Site Specific Quirks" +msgstr "사이트별 특수 처리 사용" + +#: ../webkit/webkitwebsettings.cpp:785 +msgid "Enables the site-specific compatibility workarounds" +msgstr "사이트별 호환성 회피 기능 사용" + +#: ../webkit/webkitwebsettings.cpp:807 +msgid "Enable page cache" +msgstr "페이지 캐시 사용" + +#: ../webkit/webkitwebsettings.cpp:808 +msgid "Whether the page cache should be used" +msgstr "페이지 캐시를 사용할지 여부" + +#: ../webkit/webkitwebsettings.cpp:828 +msgid "Auto Resize Window" +msgstr "자동 창 크기 조절" + +#: ../webkit/webkitwebsettings.cpp:829 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "페이지가 요청하면 자동으로 최상위의 창 크기를 조정합니다." + +#: ../webkit/webkitwebsettings.cpp:861 +msgid "Enable Java Applet" +msgstr "자바 애플릿 사용" + +#: ../webkit/webkitwebsettings.cpp:862 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "<applet>을 통한 자바 애플릿 기능을 사용할지 여부" + +#: ../webkit/webkitwebview.cpp:2590 +msgid "Returns the @web_view's document title" +msgstr "@web_view의 문서 제목을 리턴합니다" + +#: ../webkit/webkitwebview.cpp:2604 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "web_view에서 표시하는 내용의 현재 URI를 리턴합니다" + +#: ../webkit/webkitwebview.cpp:2617 +msgid "Copy target list" +msgstr "복사 대상 목록" + +#: ../webkit/webkitwebview.cpp:2618 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "이 웹 뷰가 클립보드 복사에 지원하는 대상 목록" + +#: ../webkit/webkitwebview.cpp:2631 +msgid "Paste target list" +msgstr "붙여넣기 대상 목록" + +#: ../webkit/webkitwebview.cpp:2632 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "이 웹 뷰가 클립보드 붙여넣기에 지원하는 대상 목록" + +#: ../webkit/webkitwebview.cpp:2638 +msgid "Settings" +msgstr "설정" + +#: ../webkit/webkitwebview.cpp:2639 +msgid "An associated WebKitWebSettings instance" +msgstr "관련 WebKitWebSettings 인스턴스" + +#: ../webkit/webkitwebview.cpp:2652 +msgid "Web Inspector" +msgstr "웹 점검" + +#: ../webkit/webkitwebview.cpp:2653 +msgid "The associated WebKitWebInspector instance" +msgstr "관련 WebKitWebInspector 인스턴스" + +#: ../webkit/webkitwebview.cpp:2673 +msgid "Editable" +msgstr "편집 가능" + +#: ../webkit/webkitwebview.cpp:2674 +msgid "Whether content can be modified by the user" +msgstr "사용자가 페이지 내용을 바꿀 수 있는지 여부" + +#: ../webkit/webkitwebview.cpp:2680 +msgid "Transparent" +msgstr "투명" + +#: ../webkit/webkitwebview.cpp:2681 +msgid "Whether content has a transparent background" +msgstr "페이지 내용에 투명 배경이 있는지 여부" + +#: ../webkit/webkitwebview.cpp:2694 +msgid "Zoom level" +msgstr "확대/축소 단계" + +#: ../webkit/webkitwebview.cpp:2695 +msgid "The level of zoom of the content" +msgstr "페이지 내용의 확대/축소 단계" + +#: ../webkit/webkitwebview.cpp:2710 +msgid "Full content zoom" +msgstr "전체 내용 확대/축소" + +#: ../webkit/webkitwebview.cpp:2711 +msgid "Whether the full content is scaled when zooming" +msgstr "확대/축소할 때 전체 내용의 크기를 조절할지 여부" + +#: ../webkit/webkitwebview.cpp:2725 +msgid "The default encoding of the web view" +msgstr "웹 뷰의 기본 인코딩" + +#: ../webkit/webkitwebview.cpp:2738 +msgid "Custom Encoding" +msgstr "사용자 설정 인코딩" + +#: ../webkit/webkitwebview.cpp:2739 +msgid "The custom encoding of the web view" +msgstr "웹 뷰의 사용자 설정 인코딩" + +#: ../webkit/webkitwebview.cpp:2791 +msgid "Icon URI" +msgstr "아이콘 URI" + +#: ../webkit/webkitwebview.cpp:2792 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "#WebKitWebView 사용할 파비콘 URI." + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:56 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:61 +msgid "Submit" +msgstr "제출" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:66 +msgid "Reset" +msgstr "초기화" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:71 +msgid "This is a searchable index. Enter search keywords: " +msgstr "검색이 가능한 인덱스입니다. 검색어를 입력하십시오: " + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:76 +msgid "Choose File" +msgstr "파일 선택" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:81 +msgid "(None)" +msgstr "(없음)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:86 +msgid "Open Link in New _Window" +msgstr "새 창에서 링크 열기(_W)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:91 +msgid "_Download Linked File" +msgstr "링크한 파일 다운로드(_D)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:96 +msgid "Copy Link Loc_ation" +msgstr "링크 위치 복사(_A)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:101 +msgid "Open _Image in New Window" +msgstr "새 창에서 그림 열기(_I)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:106 +msgid "Sa_ve Image As" +msgstr "그림을 다른 이름으로 저장(_V)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:111 +msgid "Cop_y Image" +msgstr "그림 복사(_Y)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:116 +msgid "Open _Video in New Window" +msgstr "새 창에서 영상 열기(_V)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:121 +msgid "Open _Audio in New Window" +msgstr "새 창에서 오디오 열기(_A)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:126 +msgid "Cop_y Video Link Location" +msgstr "영상 링크 위치 복사(_Y)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:131 +msgid "Cop_y Audio Link Location" +msgstr "오디오 링크 위치 복사(_Y)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:136 +msgid "_Toggle Media Controls" +msgstr "미디어 조정판 토글(_T)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:141 +msgid "Toggle Media _Loop Playback" +msgstr "미디어 반복 재생 토글(_L)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:146 +msgid "Switch Video to _Fullscreen" +msgstr "영상을 전체 화면으로 전환(_F)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:151 +msgid "_Play" +msgstr "재생(_P)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:156 +msgid "_Pause" +msgstr "일시 중지(_P)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:161 +msgid "_Mute" +msgstr "묵음(_M)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "Open _Frame in New Window" +msgstr "프레임을 새 창에서 열기(_F)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:217 +msgid "_Reload" +msgstr "다시 읽기(_R)" + +# 맞춤법 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:234 +msgid "No Guesses Found" +msgstr "예상 단어 없음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:239 +msgid "_Ignore Spelling" +msgstr "맞춤법 무시(_I)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:244 +msgid "_Learn Spelling" +msgstr "맞춤법 추가(_L)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:249 +msgid "_Search the Web" +msgstr "웹 검색(_S)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:254 +msgid "_Look Up in Dictionary" +msgstr "사전에서 찾아보기(_L)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:259 +msgid "_Open Link" +msgstr "링크 열기(_O)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:264 +msgid "Ignore _Grammar" +msgstr "문법 무시(_G)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:269 +msgid "Spelling and _Grammar" +msgstr "맞춤법/문법(_G)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:274 +msgid "_Show Spelling and Grammar" +msgstr "맞춤법/문법 보이기(_S)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:274 +msgid "_Hide Spelling and Grammar" +msgstr "맞춤법/문법 숨기기(_H)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:279 +msgid "_Check Document Now" +msgstr "지금 문서 검사(_C)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:284 +msgid "Check Spelling While _Typing" +msgstr "입력할 때 맞춤법 검사(_T)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:289 +msgid "Check _Grammar With Spelling" +msgstr "맞춤법과 같이 문법 검사(_G)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:294 +msgid "_Font" +msgstr "글꼴(_F)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:317 +msgid "_Outline" +msgstr "외곽선(_O)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:322 +msgid "Inspect _Element" +msgstr "엘리먼트 검사(_E)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:327 +msgid "No recent searches" +msgstr "최근 검색 없음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:332 +msgid "Recent searches" +msgstr "최근 검색" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:337 +msgid "_Clear recent searches" +msgstr "최근 검색 지우기(_C)" + +# 사전 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid "term" +msgstr "용어" + +# 사전 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "definition" +msgstr "설명" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:352 +msgid "press" +msgstr "누르기" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:357 +msgid "select" +msgstr "선택" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:362 +msgid "activate" +msgstr "활성화" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:367 +msgid "uncheck" +msgstr "표시 해제" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:372 +msgid "check" +msgstr "표시" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "jump" +msgstr "이동" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:392 +msgid "Missing Plug-in" +msgstr "플러그인 없음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:398 +msgid "Plug-in Failure" +msgstr "플러그인 실패" + +#. FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number. +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:404 +msgid " files" +msgstr " 파일" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "Unknown" +msgstr "알 수 없음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:414 +#, c-format +msgctxt "Title string for images" +msgid "%s (%dx%d pixels)" +msgstr "%s (%dx%d 픽셀)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "Loading..." +msgstr "읽어들이는 중..." + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:431 +msgid "Live Broadcast" +msgstr "생방송" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:437 +msgid "audio element controller" +msgstr "오디오 엘리먼트 조정" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:439 +msgid "video element controller" +msgstr "비디오 엘리먼트 조정" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:441 +msgid "mute" +msgstr "묵음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:443 +msgid "unmute" +msgstr "묵음 해제" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:445 +msgid "play" +msgstr "재생" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:447 +msgid "pause" +msgstr "일시 중지" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:449 +msgid "movie time" +msgstr "동영상 시간" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:451 +msgid "timeline slider thumb" +msgstr "시간별 슬라이드 표시" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:453 +msgid "back 30 seconds" +msgstr "뒤로 30초" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:455 +msgid "return to realtime" +msgstr "실제 시간으로 돌아가기" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:457 +msgid "elapsed time" +msgstr "지난 시간" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:459 +msgid "remaining time" +msgstr "남은 시간" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "status" +msgstr "상태" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:463 +msgid "fullscreen" +msgstr "전체 화면" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:465 +msgid "fast forward" +msgstr "빨리 앞으로" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:467 +msgid "fast reverse" +msgstr "빨리 뒤로" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:469 +msgid "show closed captions" +msgstr "자막 보이기" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:471 +msgid "hide closed captions" +msgstr "자막 감추기" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:480 +msgid "audio element playback controls and status display" +msgstr "오디오 엘리먼트 재생 조정 및 상태 표시" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:482 +msgid "video element playback controls and status display" +msgstr "비디오 엘리먼트 재생 조정 및 상태 표시" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:484 +msgid "mute audio tracks" +msgstr "오디오 트랙 묵음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:486 +msgid "unmute audio tracks" +msgstr "오디오 트랙 묵음 해제" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:488 +msgid "begin playback" +msgstr "재생 시작" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:490 +msgid "pause playback" +msgstr "재생 일시 중지" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:492 +msgid "movie time scrubber" +msgstr "동영상 시간 표시" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:494 +msgid "movie time scrubber thumb" +msgstr "동영상 시간 표시 자" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:496 +msgid "seek movie back 30 seconds" +msgstr "동영상을 뒤로 30초 이동" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:498 +msgid "return streaming movie to real time" +msgstr "스트리밍 동영상을 실제 시간으로 돌아가기" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:500 +msgid "current movie time in seconds" +msgstr "현재 동영상 시간, 초 단위" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "number of seconds of movie remaining" +msgstr "남은 동영상 시간, 초 단위" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:504 +msgid "current movie status" +msgstr "현재 동영상 상태" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:506 +msgid "seek quickly back" +msgstr "빠르게 뒤 위치로 이동" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:508 +msgid "seek quickly forward" +msgstr "빠르게 앞 위치로 이동" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:510 +msgid "Play movie in fullscreen mode" +msgstr "전체 화면 모드에서 동영상 재생" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "start displaying closed captions" +msgstr "자막 표시 시작" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:514 +msgid "stop displaying closed captions" +msgstr "자막 표시 중지" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:523 +msgid "indefinite time" +msgstr "시간 미지정" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:553 +msgid "value missing" +msgstr "값 없음" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:559 +msgid "type mismatch" +msgstr "타입 불일치" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:564 +msgid "pattern mismatch" +msgstr "패턴 불일치" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:569 +msgid "too long" +msgstr "너무 깁니다" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:574 +msgid "range underflow" +msgstr "범위 언더플로우" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:579 +msgid "range overflow" +msgstr "범위 오버플로우" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:584 +msgid "step mismatch" +msgstr "단계 불일치" diff --git a/Source/WebKit/gtk/po/lt.po b/Source/WebKit/gtk/po/lt.po new file mode 100644 index 0000000..fd449a2 --- /dev/null +++ b/Source/WebKit/gtk/po/lt.po @@ -0,0 +1,1082 @@ +# Lithuanian translation for WebKit GTK. +# This file is put in the public domain. +# Rimas Kudelis <rq@akl.lt>, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-16 15:01-0200\n" +"PO-Revision-Date: 2010-02-26 20:07+0300\n" +"Last-Translator: Rimas Kudelis <rq@akl.lt>\n" +"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" +"100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.5.2\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Failo išsiuntimas" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Įvesties _metodai" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "Krypties iš _kairės į dešinę ženklas (LRM)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "Krypties iš _dešinės į kairę ženklas (RLM)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "Į_terpimo iš kairės į dešinę ženklas (LRE)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "Įt_erpimo iš dešinės į kairę ženklas (RLE)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "_Perdengiantis iš kairės į dešinę ženklas (LRO)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "Pe_rdengiantis iš dešinės į kairę ženklas (RLO)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "_Ankstesnio lygmens krypties ženklas (PDF)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "_Nulinio pločio tarpas (ZWS)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "Nulinio pločio _jungimo ženklas (ZWJ)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "Nulinio pločio _skėlimo ženklas (ZWNJ)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "Įterpti unikodo valdymo ženklą" + +#: WebKit/gtk/webkit/webkitdownload.cpp:262 +msgid "Network Request" +msgstr "Tinklo užklausa" + +#: WebKit/gtk/webkit/webkitdownload.cpp:263 +msgid "The network request for the URI that should be downloaded" +msgstr "" +"Tinklo užklausa parsiųstino failo universaliajam ištekliaus identifikatoriui " +"(URI)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:277 +msgid "Network Response" +msgstr "Tinklo atsakas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:278 +msgid "The network response for the URI that should be downloaded" +msgstr "" +"Tinklo atsakas į užklausą parsiųstino failo universaliajam ištekliaus " +"identifikatoriui (URI)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:292 +msgid "Destination URI" +msgstr "Paskirties URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:293 +msgid "The destination URI where to save the file" +msgstr "Paskirties failo universalusis ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:307 +msgid "Suggested Filename" +msgstr "Siūlomas failo vardas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:308 +msgid "The filename suggested as default when saving" +msgstr "Numatytasis siūlomas įrašomo failo vardas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:325 +msgid "Progress" +msgstr "Progresas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:326 +msgid "Determines the current progress of the download" +msgstr "Nurodo esamą atsiuntimo progresą" + +#: WebKit/gtk/webkit/webkitdownload.cpp:339 +msgid "Status" +msgstr "Būsena" + +#: WebKit/gtk/webkit/webkitdownload.cpp:340 +msgid "Determines the current status of the download" +msgstr "Nurodo esamą atsiuntimo būseną" + +#: WebKit/gtk/webkit/webkitdownload.cpp:355 +msgid "Current Size" +msgstr "Esamasis dydis" + +#: WebKit/gtk/webkit/webkitdownload.cpp:356 +msgid "The length of the data already downloaded" +msgstr "Jau parsiųstų duomenų kiekis" + +#: WebKit/gtk/webkit/webkitdownload.cpp:370 +msgid "Total Size" +msgstr "Visas dydis" + +#: WebKit/gtk/webkit/webkitdownload.cpp:371 +msgid "The total size of the file" +msgstr "Visas failo dydis" + +#: WebKit/gtk/webkit/webkitdownload.cpp:522 +msgid "User cancelled the download" +msgstr "Naudotojas atsisakė siuntimo" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Svetainei %s reikalingas naudotojo vardas ir slaptažodis" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269 +msgid "Username:" +msgstr "Naudotojo vardas:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271 +msgid "Password:" +msgstr "Slaptažodis:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:280 +msgid "_Remember password" +msgstr "Įsi_minti slaptažodį" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Pavadinimas" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Kadro pavadinimas" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2315 +msgid "Title" +msgstr "Antraštė" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Kadre atverto tinklalapio pavadinimas" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2329 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "" +"Kadre atverto tinklalapio universalusis ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Horizontalios slinkties juostos taisyklės" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Taisyklės, taikomos kadro horizontaliai slinkties juostai." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Vertikalios slinkties juostos taisyklės" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Taisyklės, taikomos kadro vertikaliai slinkties juostai." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Žurnalo įrašo pavadinimas" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternatyvus pavadinimas" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Alternatyvus žurnalo įrašo pavadinimas" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Žurnalo įrašo universalusis ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Pirminis URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Pirminis žurnalo įrašo universalusis ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Paskutinis apsilankymas" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Paskutinio apsilankymo data ir laikas" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Žiniatinklio rodinys" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Žiniatinklio rodinys, rodantis žiniatinklio analizatorių" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Analizuojamas URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "" +"Šiuo metu analizuojamo failo universalusi ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Įjungti „JavaScript“ profiliavimą" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Profiliuoti vykdomą „JavaScript“ kodą." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Įjungti chronologinį profiliavimą" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Profiliuoti „WebCore“ instrumentuotę." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Priežastis" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Tinklalapio atvėrimo priežastis" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "" +"Mėginamo atverti tinklalapio universalusis ištekliaus identifikatorius (URI)" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Mygtukas" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Mygtukas, kurį galima paspausti" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Modifikatorių būsena" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Bitų kaukė, atspindinti modifikavimo klavišų būseną" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Paskirties kadras" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Kadras, kuriame tinklalapis turi būti atvertas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:233 +msgid "Default Encoding" +msgstr "Numatytoji koduotė" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:234 +msgid "The default encoding used to display text." +msgstr "Numatytoji teksto koduotė." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:242 +msgid "Cursive Font Family" +msgstr "Rankraštinių šriftų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:243 +msgid "The default Cursive font family used to display text." +msgstr "Numatytoji tekstui atvaizduoti naudojama rankraštinių šriftų šeima." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:251 +msgid "Default Font Family" +msgstr "Numatytoji šriftų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:252 +msgid "The default font family used to display text." +msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų šeima." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:260 +msgid "Fantasy Font Family" +msgstr "Dekoratyvių šriftų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:261 +msgid "The default Fantasy font family used to display text." +msgstr "Numatytoji tekstui atvaizduoti naudojama dekoratyvių šriftų šeima." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:269 +msgid "Monospace Font Family" +msgstr "Lygiapločių šriftų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:270 +msgid "The default font family used to display monospace text." +msgstr "Numatytoji tekstui atvaizduoti naudojama lygiapločių šriftų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:278 +msgid "Sans Serif Font Family" +msgstr "Šriftų be užraitų šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:279 +msgid "The default Sans Serif font family used to display text." +msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų be užraitų šeima." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:287 +msgid "Serif Font Family" +msgstr "Šriftų su užraitais šeima" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:288 +msgid "The default Serif font family used to display text." +msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų su užraitais šeima." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:296 +msgid "Default Font Size" +msgstr "Numatytasis šrifto dydis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:297 +msgid "The default font size used to display text." +msgstr "Numatytasis tekstui atvaizduoti naudojamo šrifto dydis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:305 +msgid "Default Monospace Font Size" +msgstr "Numatytasis lygiapločio šrifto dydis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:306 +msgid "The default font size used to display monospace text." +msgstr "Numatytasis tekstui atvaizduoti naudojamo lygiapločio šrifto dydis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:314 +msgid "Minimum Font Size" +msgstr "Minimalus šrifto dydis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:315 +msgid "The minimum font size used to display text." +msgstr "Mažiausias leistinas tekstui atvaizduoti naudojamo šrifto dydis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:323 +msgid "Minimum Logical Font Size" +msgstr "Minimalus loginis šrifto dydis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:324 +msgid "The minimum logical font size used to display text." +msgstr "" +"Mažiausias leistinas tekstui atvaizduoti naudojamo šrifto loginis dydis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:343 +msgid "Enforce 96 DPI" +msgstr "Naudoti 96 tašk./colyje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:344 +msgid "Enforce a resolution of 96 DPI" +msgstr "Priverstinai naudoti 96 tašk./colyje skiriamąją gebą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:352 +msgid "Auto Load Images" +msgstr "Įkelti paveikslus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:353 +msgid "Load images automatically." +msgstr "Automatiškai įkelti paveikslus." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:361 +msgid "Auto Shrink Images" +msgstr "Mažinti paveikslus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:362 +msgid "Automatically shrink standalone images to fit." +msgstr "Automatiškai mažinti pavienius paveikslus, kad sutilptų į langą." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:370 +msgid "Print Backgrounds" +msgstr "Spausdinti foną" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:371 +msgid "Whether background images should be printed." +msgstr "Ar spausdinti fono piešinius." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:379 +msgid "Enable Scripts" +msgstr "Įjungti scenarijus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:380 +msgid "Enable embedded scripting languages." +msgstr "Įjungti įtaisytuosius scenarijus." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:388 +msgid "Enable Plugins" +msgstr "Įjungti papildinius" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:389 +msgid "Enable embedded plugin objects." +msgstr "Įjungti įtaisytuosius papildinius." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:397 +msgid "Resizable Text Areas" +msgstr "Keičiamo dydžio teksto laukai" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:398 +msgid "Whether text areas are resizable." +msgstr "Ar leisti keisti teksto laukų dydį." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:405 +msgid "User Stylesheet URI" +msgstr "Naudotojo stiliaus aprašo URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:406 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" +"Visiems tinklalapiams taikytino naudotojo stiliaus aprašo failo " +"universalusis ištekliaus identifikatorius (URI)." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:421 +msgid "Zoom Stepping Value" +msgstr "Mastelio keitimo žingsnis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:422 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Žingsnis, kuriuo keičiamas mastelis, jį didinant ar mažinant." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:440 +msgid "Enable Developer Extras" +msgstr "Įjungti programuotojų įrankius" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:441 +msgid "Enables special extensions that help developers" +msgstr "Įjungti specialius tinklalapių programuotojams skirtus įrankius" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:461 +msgid "Enable Private Browsing" +msgstr "Įjungti privatųjį naršymą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:462 +msgid "Enables private browsing mode" +msgstr "Įjungti privačiojo naršymo veikseną" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:477 +msgid "Enable Spell Checking" +msgstr "Tikrinti rašybą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:478 +msgid "Enables spell checking while typing" +msgstr "Įjungti rašybos tikrinimą renkant tekstą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:501 +msgid "Languages to use for spell checking" +msgstr "Rašybos tikrinimo kalbos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:502 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Kableliais atskirtas kalbų, kurių rašybą reikia tikrinti, sąrašas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:516 +msgid "Enable Caret Browsing" +msgstr "Visuomet įjungti teksto žymeklį" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:517 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Ar įjungti teksto fragmentų žymėjimą klaviatūra" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:532 +msgid "Enable HTML5 Database" +msgstr "Įjungti HTML5 duomenų bazę" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:533 +msgid "Whether to enable HTML5 database support" +msgstr "Ar įjungti HTML5 duomenų bazės palaikymą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:548 +msgid "Enable HTML5 Local Storage" +msgstr "Įjungti HTML5 vietinę saugyklą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:549 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Ar įjungti HTML5 vietinės saugyklos palaikymą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:563 +msgid "Enable XSS Auditor" +msgstr "Įjungti XSS auditavimą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:564 +msgid "Whether to enable teh XSS auditor" +msgstr "Ar įjungti XSS auditavimą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:582 +msgid "User Agent" +msgstr "Naudotojo agentas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:583 +msgid "The User-Agent string used by WebKitGtk" +msgstr "„User-Agent“ eilutė, kurią „WebKitGtk“ turėtų naudoti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:598 +msgid "JavaScript can open windows automatically" +msgstr "Leisti „JavaScript“ atverti langus automatiškai" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:599 +msgid "Whether JavaScript can open windows automatically" +msgstr "Ar „JavaScript“ leidžiama atverti langus automatiškai" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:614 +msgid "Enable offline web application cache" +msgstr "Įjungti žiniatinklio programų podėlį darbui neprisijungus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:615 +msgid "Whether to enable offline web application cache" +msgstr "Ar įjungti žiniatinklio programų podėlį darbui neprisijungus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:642 +msgid "Editing behavior" +msgstr "Redagavimo elgsena" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:643 +msgid "The behavior mode to use in editing mode" +msgstr "Elgsena naudotina redagavimo veiksenoje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:659 +msgid "Enable universal access from file URIs" +msgstr "Įjungti universalią prieigą iš „file“ URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:660 +msgid "Whether to allow universal access from file URIs" +msgstr "Ar leisti universalią prieigą iš „file“ URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:675 +msgid "Enable DOM paste" +msgstr "Įjungti DOM įdėjimą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:676 +msgid "Whether to enable DOM paste" +msgstr "Ar įjungti DOM įdėjimą" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:694 +msgid "Tab key cycles through elements" +msgstr "Tab klavišu šokti tarp elementų" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:695 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Ar Tab klavišu galima šokti iš vieno elemento tinklalapyje į kitą." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:715 +msgid "Enable Default Context Menu" +msgstr "Įjungti numatytąjį kontekstinį meniu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:716 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Ar apdoroti dešiniojo pelės mygtuko spustelėjimus, suformuojant numatytąjį " +"kontekstinį meniu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:736 +msgid "Enable Site Specific Quirks" +msgstr "Įjungti specifines svetainių pataisas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:737 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Įjungti kai kuriose svetainėse reikalingas specifines pataisas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:759 +msgid "Enable page cache" +msgstr "Įjungti tinklalapių podėlį" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:760 +msgid "Whether the page cache should be used" +msgstr "Ar naudoti tinklalapių podėlį" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:780 +msgid "Auto Resize Window" +msgstr "Automatiškai keisti lango dydį" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:781 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Tinklalapiui pareikalavus, automatiškai keisti pagrindinio lango dydį" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2316 +msgid "Returns the @web_view's document title" +msgstr "Grąžina @web_view objekte atverto tinklalapio pavadinimą" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2330 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "" +"Grąžina @web_view objekte atverto tinklalapio universalųjį ištekliaus " +"identifikatorių (URI)" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2343 +msgid "Copy target list" +msgstr "Kopijuotinų taikinių sąrašas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2344 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Šio žiniatinklio rodinio palaikomų taikinių kopijavimui į iškarpinę sąrašas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2357 +msgid "Paste target list" +msgstr "Įdėtinų taikinių sąrašas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2358 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Šio žiniatinklio rodinio palaikomų taikinių įdėjimui iš iškarpinės sąrašas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2364 +msgid "Settings" +msgstr "Nuostatos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2365 +msgid "An associated WebKitWebSettings instance" +msgstr "Susietasis „WebKitWebSettings“ tipo objektas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2378 +msgid "Web Inspector" +msgstr "Žiniatinklio analizatorius" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2379 +msgid "The associated WebKitWebInspector instance" +msgstr "Susietasis „WebKitWebInspector“ tipo objektas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2399 +msgid "Editable" +msgstr "Keičiamas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2400 +msgid "Whether content can be modified by the user" +msgstr "Ar turinys gali būti keičiamas naudotojo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2406 +msgid "Transparent" +msgstr "Permatomas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2407 +msgid "Whether content has a transparent background" +msgstr "Ar turinio fonas permatomas" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2420 +msgid "Zoom level" +msgstr "Mastelis" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2421 +msgid "The level of zoom of the content" +msgstr "Turinio rodymo mastelio dydis" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2436 +msgid "Full content zoom" +msgstr "Taikyti mastelį visam turiniui" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2437 +msgid "Whether the full content is scaled when zooming" +msgstr "Ar mastelis keičiamas visam tinklalapio turiniui" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2450 +msgid "Encoding" +msgstr "Koduotė" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2451 +msgid "The default encoding of the web view" +msgstr "Numatytoji žiniatinklio rodinio koduotė" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2464 +msgid "Custom Encoding" +msgstr "Pasirinktinė koduotė" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2465 +msgid "The custom encoding of the web view" +msgstr "Pasirinktinė žiniatinklio rodinio koduotė" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2517 +msgid "Icon URI" +msgstr "Piktogramos URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2518 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "#WebKitWebView naudotinos „favicon“ piktogramos URI" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Pateikti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Atkurti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "_Searchable Index" +msgstr "_Rodyklė paieškai" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Parinkite failą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Joks)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Atverti saistomą objektą naujame _lange" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "At_siųsti saistomą objektą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Kopijuoti saito _adresą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Atverti _paveikslą naujame lange" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Į_rašyti paveikslą kaip" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "_Kopijuoti paveikslą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "_Atverti kadrą naujame lange" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "At_siųsti iš naujo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Pasiūlymų nėra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Nepaisyti rašybos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "Įsi_minti rašybą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Ieškoti žiniatinklyje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Ieškoti _žodyne" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Atverti saistomą objektą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Nepaisyti _gramatikos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Rašyba ir _gramatika" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Rodyti rašybą ir gramatiką" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Nerodyti rašybos ir gramatikos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Pa_tikrinti dokumentą dabar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Tikrinti _rašybą rašant tekstą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Tikrinti _gramatiką kartu su rašyba" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "Šri_ftas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Kontūras" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Analizuoti _elementą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Paskiausių paieškų nėra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Paskiausios paieškos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Valyti paskiausias paieškas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "terminas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "apibrėžtis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "spustelėti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "pasirinkti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "aktyvinti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "nuimti žymėjimą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "pažymėti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "šokti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " failai" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Nežinoma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Įkeliama…" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Tiesioginė transliacija" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "audio elemento skydelis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "video elemento skydelis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "išjungti garsą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "įjungti garsą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "groti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pristabdyti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "laiko juosta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "laiko juostos slankiklis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "30 sek. atgal" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "grįžti į realų laiką" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "praėjęs laikas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "likęs laikas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "būsena" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "visame ekrane" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "prasukti pirmyn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "prasukti atgal" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "rodyti titrus" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "nerodyti titrų" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "audio elemento valdikliai ir būsenos indikatorius" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "video elemento valdikliai ir būsenos indikatorius" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "išjungti garso takelio garsą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "įjungti garso takelio garsą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "pradėti grojimą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pristabdyti grojimą" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "įrašo laiko juosta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "įrašo laiko juostos slankiklis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "uždelsti įrašo atkūrimą 30 sek." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "grąžinti įrašo atkūrimą į realų laiką" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "praėjęs atkuriamo įrašo laikas sekundėmis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "likęs atkuriamo įrašo laikas sekundėmis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "atkuriamo įrašo būsena" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "prasukti įrašą į priekį" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "prasukti įrašą atgal" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Rodyti įrašą visame ekrane" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "pradėti ekrane rodyti titrus" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "nutraukti titrų rodymą ekrane" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "laikas neapibrėžtas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "trūksta reikšmės" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "tipo nesutampimas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "šablono nesutampimas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "per ilgas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "reikšmė per maža" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "reikšmė per didelė" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "žingsnio nesutapimas" diff --git a/Source/WebKit/gtk/po/lv.po b/Source/WebKit/gtk/po/lv.po new file mode 100644 index 0000000..3181ed3 --- /dev/null +++ b/Source/WebKit/gtk/po/lv.po @@ -0,0 +1,704 @@ +# This file is put in the public domain. +# +# Peteris Krisjanis <pecisk@gmail.com>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2009-04-09 19:09-0300\n" +"PO-Revision-Date: 2010-03-07 19:37+0200\n" +"Last-Translator: Peteris Krisjanis <pecisk@gmail.com>\n" +"Language-Team: Latviešu <lata-l10n@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:425 +msgid "Upload File" +msgstr "Augšupielādēt failu" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139 +msgid "Input _Methods" +msgstr "Ievades _metodes" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM _No kreisās uz labo atzīme" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM No _labās uz kreiso atzīme" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE No kreisās uz labo _iegultīšana" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE No labās uz kreiso ie_gultīšana" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO No kreisās uz labo _pārrakstīšana" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO No labās uz kreiso pār_rakstīšana" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _izlēcošā virziena formatēšana" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _Nulle ar tukšumu" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Nulle ar _savienojumu" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Nulle ar _nesavienojumu" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:134 +msgid "_Insert Unicode Control Character" +msgstr "_Ievietot Unicode kontroles rakstzīmi" + +#: WebKit/gtk/webkit/webkitdownload.cpp:250 +msgid "Network Request" +msgstr "Tīkla pieprasījums" + +#: WebKit/gtk/webkit/webkitdownload.cpp:251 +msgid "The network request for the URI that should be downloaded" +msgstr "URI, kuru vajadzētu lejupielādēt, tīkla pieprasījums" + +#: WebKit/gtk/webkit/webkitdownload.cpp:265 +msgid "Destination URI" +msgstr "Mērķa URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "The destination URI where to save the file" +msgstr "Mērķa URI, kur saglabāt failu" + +#: WebKit/gtk/webkit/webkitdownload.cpp:280 +msgid "Suggested Filename" +msgstr "Ieteiktais faila nosaukums" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "The filename suggested as default when saving" +msgstr "Noklusēti ieteiktais faila nosaukums saglabājot" + +#: WebKit/gtk/webkit/webkitdownload.cpp:294 +msgid "Progress" +msgstr "Progress" + +#: WebKit/gtk/webkit/webkitdownload.cpp:295 +msgid "Determines the current progress of the download" +msgstr "Nosaka lejupielādes pašreizējo progresu" + +#: WebKit/gtk/webkit/webkitdownload.cpp:308 +msgid "Status" +msgstr "Statuss" + +#: WebKit/gtk/webkit/webkitdownload.cpp:309 +msgid "Determines the current status of the download" +msgstr "Nosaka lejupielādes pašreizējo statusu" + +#: WebKit/gtk/webkit/webkitdownload.cpp:324 +msgid "Current Size" +msgstr "Pašreizējais izmērs" + +#: WebKit/gtk/webkit/webkitdownload.cpp:325 +msgid "The length of the data already downloaded" +msgstr "Jau lejupielādēto datu apjoms" + +#: WebKit/gtk/webkit/webkitdownload.cpp:339 +msgid "Total Size" +msgstr "Galīgais izmērs" + +#: WebKit/gtk/webkit/webkitdownload.cpp:340 +msgid "The total size of the file" +msgstr "Galīgais faila izmērs" + +#: WebKit/gtk/webkit/webkitdownload.cpp:469 +msgid "User cancelled the download" +msgstr "Lietotājs atcēla lejupielādi" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Lietotājvārds un parole, ko pieprasa vietne %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269 +msgid "Username:" +msgstr "Lietotājvārds:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271 +msgid "Password:" +msgstr "Parole:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281 +msgid "Remember password" +msgstr "Atcerēties paroli" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:211 +msgid "Name" +msgstr "Nosaukums" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:212 +msgid "The name of the frame" +msgstr "Rāmja nosaukums" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:218 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154 +#: WebKit/gtk/webkit/webkitwebview.cpp:1715 +msgid "Title" +msgstr "Virsraksts" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:219 +msgid "The document title of the frame" +msgstr "Rāmja dokumenta virsraksts" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:225 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186 +#: WebKit/gtk/webkit/webkitwebview.cpp:1729 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:226 +msgid "The current URI of the contents displayed by the frame" +msgstr "Pašreizējais rāmī attēlotā satura URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155 +msgid "The title of the history item" +msgstr "Vēstures ieraksta virsraksts" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170 +msgid "Alternate Title" +msgstr "Alternatīvais virsraksts" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171 +msgid "The alternate title of the history item" +msgstr "Vēstures ieraksta alternatīvais virsraksts" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187 +msgid "The URI of the history item" +msgstr "Vēstures ieraksta URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167 +msgid "Original URI" +msgstr "Oriģinālais URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203 +msgid "The original URI of the history item" +msgstr "Vēstures ieraksta oriģinālais URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218 +msgid "Last visited Time" +msgstr "Pēdējā apmeklējuma laiks" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219 +msgid "The time at which the history item was last visited" +msgstr "Laiks, kad pēdējo reizi vēstures ieraksts tika apmeklēts" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:260 +msgid "Web View" +msgstr "Tīmekļa skats" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:261 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Tīmekļa skats, kas renderē pašu tīmekļa inspektoru" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:274 +msgid "Inspected URI" +msgstr "Inspektētais URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:275 +msgid "The URI that is currently being inspected" +msgstr "URI, kuru pašreiz inspektē" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:291 +msgid "Enable JavaScript profiling" +msgstr "Ieslēgt JavaScript profilēšanu" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:292 +msgid "Profile the executed JavaScript." +msgstr "Profilēt izpildīto JavaScript kodu." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152 +msgid "Reason" +msgstr "Iemesls" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153 +msgid "The reason why this navigation is occurring" +msgstr "Iemesls, kāpēc šī navigācija notiek" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI, kas tika pieprasīta kā navigācijas mērķis" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180 +msgid "Button" +msgstr "Poga" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181 +msgid "The button used to click" +msgstr "Poga, ko noklikšķināt" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196 +msgid "Modifier state" +msgstr "Modifīcētāja stāvoklis" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197 +msgid "A bitmask representing the state of the modifier keys" +msgstr "" +"Lubiņš stāsta, ka nodokļu slogs Latvijā ir pārāk liels, turklāt valsts no " +"uzņēmuma prasa, lai tas būtu konkurētspējīgs. Viņš uzskata, ka, samazinot " +"nodokļus, uzņēmēju aktivitāte palielinātos un augtu arī konkurētspēja." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:129 +msgid "Default Encoding" +msgstr "Noklusētais kodējums" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:130 +msgid "The default encoding used to display text." +msgstr "Noklusētais kodējums, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:138 +msgid "Cursive Font Family" +msgstr "Cursive fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:139 +msgid "The default Cursive font family used to display text." +msgstr "Noklusētā Cursive fontu ģimene, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:147 +msgid "Default Font Family" +msgstr "Noklusētā fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:148 +msgid "The default font family used to display text." +msgstr "Noklusētā fontu ģimene, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:156 +msgid "Fantasy Font Family" +msgstr "Fantasy fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:157 +msgid "The default Fantasy font family used to display text." +msgstr "Noklusētā Fantasy fontu ģimene, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:165 +msgid "Monospace Font Family" +msgstr "Monospace fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:166 +msgid "The default font family used to display monospace text." +msgstr "Noklusētā fontu ģimene, ko izmanto monospace teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:174 +msgid "Sans Serif Font Family" +msgstr "Sans Serif fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:175 +msgid "The default Sans Serif font family used to display text." +msgstr "Noklusētā Sans Serif fontu ģimene, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:183 +msgid "Serif Font Family" +msgstr "Serif fontu ģimene" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:184 +msgid "The default Serif font family used to display text." +msgstr "Noklusētā Serif fontu ģimene, ko izmanto teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:192 +msgid "Default Font Size" +msgstr "Noklusētais fontu izmērs" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:193 +msgid "The default font size used to display text." +msgstr "Noklusētais fontu izmērs, kuru izmantot teksta attēlošanā." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:201 +msgid "Default Monospace Font Size" +msgstr "Noklusētais Monospace fontu izmērs" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:202 +msgid "The default font size used to display monospace text." +msgstr "Noklusētais fonta izmērs monospace teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:210 +msgid "Minimum Font Size" +msgstr "Minimālais fontu izmērs" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:211 +msgid "The minimum font size used to display text." +msgstr "Minimālais fonta izmērs teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:219 +msgid "Minimum Logical Font Size" +msgstr "Minimālais loģiskais fontu izmērs" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:220 +msgid "The minimum logical font size used to display text." +msgstr "Minimālais loģiskais fontu izmērs teksta attēlošanai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:239 +msgid "Enforce 96 DPI" +msgstr "Forsēt 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:240 +msgid "Enforce a resolution of 96 DPI" +msgstr "Forsēt 96 DPI izšķirtspēju" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:248 +msgid "Auto Load Images" +msgstr "Automātiska attēlu ielāde" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:249 +msgid "Load images automatically." +msgstr "Ielādēt attēlus automātiski." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:257 +msgid "Auto Shrink Images" +msgstr "Automātiski samazināt attēlus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:258 +msgid "Automatically shrink standalone images to fit." +msgstr "" +"Automātiski samazināt atsevišķi parādītus attēlus, lai tie ietilptu logā." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:266 +msgid "Print Backgrounds" +msgstr "Drukāt fonus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:267 +msgid "Whether background images should be printed." +msgstr "Vai fona attēlus vajadzētu drukāt." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:275 +msgid "Enable Scripts" +msgstr "Aktivizēt skriptus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:276 +msgid "Enable embedded scripting languages." +msgstr "Aktivizēt iegultās skriptēšanas valodas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:284 +msgid "Enable Plugins" +msgstr "Aktivizēt spraudņus" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:285 +msgid "Enable embedded plugin objects." +msgstr "Aktivizēt iegultos spraudņu objektus." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:293 +msgid "Resizable Text Areas" +msgstr "Teksta lauki ar maināmu izmēru" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:294 +msgid "Whether text areas are resizable." +msgstr "Vai teksta lauki ir ar maināmu izmēru" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "User Stylesheet URI" +msgstr "Lietotāja stila lapas URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:302 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "Stila lapas URI, kuru pielietot katrai lapai." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:317 +msgid "Zoom Stepping Value" +msgstr "Mērogošanas pakāpes vērtība" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"Vērtība, par kuru mēroga līmenis tiek izmainīts palielinot vai samazinot " +"to." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:336 +msgid "Enable Developer Extras" +msgstr "Aktivizēt izstrādātāja ekstras" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:337 +msgid "Enables special extensions that help developers" +msgstr "Aktivizē speciālus paplašinājumus, kas palīdz izstrādātājiem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Enable Private Browsing" +msgstr "Aktivizēt privāto pārlūkošanu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:358 +msgid "Enables private browsing mode" +msgstr "Aktivizē privātās pārlūkošanas režīmu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1716 +msgid "Returns the @web_view's document title" +msgstr "Atgriež @web_view dokumenta virsrakstu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1730 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Atgriež pašreizējo satura, kas attēlos @web_view, URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1743 +msgid "Copy target list" +msgstr "Kopēt mērķu sarakstu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1744 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Mērķu saraksts, ko šis tīmekļa skats atbalsta starpliktuves kopēšanai" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1757 +msgid "Paste target list" +msgstr "Ielikt mērķu sarakstu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1758 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Mērķu saraksts, ko šis tīmekļa skats atbalsta starpliktuves kopēšanai" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1764 +msgid "Settings" +msgstr "Iestatījumi" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1765 +msgid "An associated WebKitWebSettings instance" +msgstr "Saistītā WebKitWebSettings instance" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1778 +msgid "Web Inspector" +msgstr "Tīmekļa inspektors" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1779 +msgid "The associated WebKitWebInspector instance" +msgstr "Saistītā WebKitInspector instance" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1799 +msgid "Editable" +msgstr "Rediģējams" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1800 +msgid "Whether content can be modified by the user" +msgstr "Vai lietotājs var mainīt saturu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1806 +msgid "Transparent" +msgstr "Caurspīdīgs" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1807 +msgid "Whether content has a transparent background" +msgstr "Vai saturam ir caurspīdīgs fons" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1820 +msgid "Zoom level" +msgstr "Mērogojuma līmenis" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1821 +msgid "The level of zoom of the content" +msgstr "Satura mērogojuma līmenis" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1836 +msgid "Full content zoom" +msgstr "Visa satura mērogojums" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1837 +msgid "Whether the full content is scaled when zooming" +msgstr "Vai viss saturs tiek mērogots" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1850 +msgid "Encoding" +msgstr "Kodējums" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1851 +msgid "The default encoding of the web view" +msgstr "Tīmekļa skata noklusētais kodējums" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1864 +msgid "Custom Encoding" +msgstr "Izvēlēts kodējums" + +#: WebKit/gtk/webkit/webkitwebview.cpp:1865 +msgid "The custom encoding of the web view" +msgstr "Tīmekļa skata izvēlētais kodējums" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56 +msgid "Submit" +msgstr "Pieteikt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61 +msgid "Reset" +msgstr "Pārstatīt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66 +msgid "_Searchable Index" +msgstr "_Meklējumu indekss" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71 +msgid "Choose File" +msgstr "Izvēlieties failu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76 +msgid "(None)" +msgstr "(Nekas)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81 +msgid "Open Link in New _Window" +msgstr "Atvērt saiti jau_nā logā" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86 +msgid "_Download Linked File" +msgstr "_Lejupielādēt saitēto failu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91 +msgid "Copy Link Loc_ation" +msgstr "Kopēt saites lokā_ciju" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96 +msgid "Open _Image in New Window" +msgstr "Atvērt _attēlu jaunā logā" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101 +msgid "Sa_ve Image As" +msgstr "Sa_glabāt attēlu kā" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106 +msgid "Cop_y Image" +msgstr "Kopē_t attēlu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111 +msgid "Open _Frame in New Window" +msgstr "Atvērt _rāmi jaunā logā" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162 +msgid "_Reload" +msgstr "_Pārlādēt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179 +msgid "No Guesses Found" +msgstr "Nav neviena minējuma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184 +msgid "_Ignore Spelling" +msgstr "_Ignorēt pareizrakstību" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189 +msgid "_Learn Spelling" +msgstr "_Iemācīties pareizrakstību" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194 +msgid "_Search the Web" +msgstr "_Meklēt tīmeklī" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199 +msgid "_Look Up in Dictionary" +msgstr "_Uzmeklēt vārdnīcā" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204 +msgid "_Open Link" +msgstr "_Atvērt saiti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209 +msgid "Ignore _Grammar" +msgstr "Ignorēt _gramatiku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214 +msgid "Spelling and _Grammar" +msgstr "Pareizrakstība un _gramatika" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219 +msgid "_Show Spelling and Grammar" +msgstr "_Rādīt pareizrakstību un gramatiku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219 +msgid "_Hide Spelling and Grammar" +msgstr "_Slēpt pareizrakstību un gramatiku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224 +msgid "_Check Document Now" +msgstr "_Pārbaudīt dokumentu tagad" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229 +msgid "Check Spelling While _Typing" +msgstr "Pārbaudīt pareizrakstību _rakstot" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234 +msgid "Check _Grammar With Spelling" +msgstr "Pārbaudīt _gramatiku kopā ar pareizrakstību" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239 +msgid "_Font" +msgstr "_Fonts" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262 +msgid "_Outline" +msgstr "_Kopskats" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267 +msgid "Inspect _Element" +msgstr "Inspektēt _elementu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272 +msgid "No recent searches" +msgstr "Nav nesen veiktu meklēšanu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277 +msgid "Recent searches" +msgstr "Nesen veiktās meklēšanas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282 +msgid "_Clear recent searches" +msgstr "_Attīrīt nesen veiktās meklēšanas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287 +msgid "term" +msgstr "termins" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292 +msgid "definition" +msgstr "definīcija" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297 +msgid "press" +msgstr "spiest" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302 +msgid "select" +msgstr "izvēlēties" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307 +msgid "activate" +msgstr "aktivizēt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312 +msgid "uncheck" +msgstr "neatzīmēt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317 +msgid "check" +msgstr "atzīmēt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322 +msgid "jump" +msgstr "lekt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328 +msgid " files" +msgstr " faili" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333 +msgid "Unknown" +msgstr "Nezināms" + + diff --git a/Source/WebKit/gtk/po/nb.po b/Source/WebKit/gtk/po/nb.po new file mode 100644 index 0000000..fdfa753 --- /dev/null +++ b/Source/WebKit/gtk/po/nb.po @@ -0,0 +1,1104 @@ +# Norwegian bokmål translation of Epiphany +# Copyright (C) 2000-2003, 2005 Free Software Foundation, Inc. +# Ola Sverre Bauge <osb@plover.net>, 2000. +# Kjartan Maraas <kmaraas@gnome.org>, 2000-2010. +# Roy-Magne Mo <rmo@sunnmore.net>, 2001. +# Terance Edward Sola <terance@lyse.net>, 2005. +# Øivind Hoel <ohoel@cvs.gnome.org>, 2006. +msgid "" +msgstr "" +"Project-Id-Version: epiphany 2.29.x\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-04-05 14:36+0200\n" +"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" +"Language-Team: Norwegian Bokmal <i18n-nb@lister.ping.uio.no>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "" + +# (ugh) +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Fremdrift" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Status" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Total størrelse" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Brukernavn:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Passord:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "Husk passo_rd" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Navn" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Tittel" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +#, fuzzy +msgid "The title of the history item" +msgstr "Sideinformasjon som vises i historikkvisning" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +#, fuzzy +msgid "The alternate title of the history item" +msgstr "Sideinformasjon som vises i historikkvisning" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +#, fuzzy +msgid "The URI of the history item" +msgstr "Åpne historikkvinduet" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +#, fuzzy +msgid "The original URI of the history item" +msgstr "Sideinformasjon som vises i historikkvisning" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +#, fuzzy +msgid "Last visited Time" +msgstr "Oftest besøkt" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +#, fuzzy +msgid "Web View" +msgstr "_Vis" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Aktiver profilering av JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "Aktiver myk rulling" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Årsak" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Knapp" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Forvalgt koding" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Forvalgt skriftfamilie" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Forvalgt skriftstørrelse" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Minste skriftstørrelse" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +#, fuzzy +msgid "Minimum Logical Font Size" +msgstr "Minste skriftstørrelse" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Skriv ut bakgrunn" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +#, fuzzy +msgid "Whether background images should be printed." +msgstr "Om bakgrunnsbilder skal skrives ut" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Slå på JavaScript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Aktiver tillegg" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +#, fuzzy +msgid "User Stylesheet URI" +msgstr "Bruk egendefinert _stilark" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Slå på privat nettlesing" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "Aktiver myk rulling" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +#, fuzzy +msgid "Whether to enable teh XSS auditor" +msgstr "Om bakgrunnen skal skrives ut" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Brukeragent" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Slå på Java-applet" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +#, fuzzy +msgid "Paste target list" +msgstr "Lim inn utklippstavlen" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Innstillinger" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Inspeksjon av nettsider" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Redigerbar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +#, fuzzy +msgid "Whether content can be modified by the user" +msgstr "Bruk koding som spesifisert av dokumentet" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Gjennomsiktig" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +#, fuzzy +msgid "Whether content has a transparent background" +msgstr "Om bakgrunnen skal skrives ut" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Koding" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +#, fuzzy +msgid "Custom Encoding" +msgstr "Tekstkoding" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Send inn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Nullstill" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Velg fil" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Ingen)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Åpne lenke i nytt _vindu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +#, fuzzy +msgid "_Download Linked File" +msgstr "Last ne_d lenke" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Åpne b_ilde i nytt vindu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "La_gre bilde som" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Kop_ier bilde" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +#, fuzzy +msgid "Open _Frame in New Window" +msgstr "Åpne i nytt _vindu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Last om" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Søk på nettet" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Åpne lenke" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Sjekk dokumentet nå" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "Skri_ft" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspiser _element" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +#, fuzzy +msgid "term" +msgstr "Andre" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definisjon" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +#, fuzzy +msgid "press" +msgstr "Adresse" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "velg" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "slå på" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "sjekk" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "hopp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " filer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Ukjent" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Laster..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "demp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "spill av" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pause" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "tilbake 30 sekunder" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "gjenstående tid" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "status" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "fullskjerm" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +#, fuzzy +msgid "fast forward" +msgstr "_Fremover" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +#, fuzzy +msgid "fast reverse" +msgstr "Tidligere utviklere:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +#, fuzzy +msgid "Play movie in fullscreen mode" +msgstr "Lås i fullskjermmodus" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + diff --git a/Source/WebKit/gtk/po/nl.po b/Source/WebKit/gtk/po/nl.po new file mode 100644 index 0000000..e33e284 --- /dev/null +++ b/Source/WebKit/gtk/po/nl.po @@ -0,0 +1,1355 @@ +# Dutch translation of webkit-gtk +# Released under the same license as webkit-gtk +# Reinout van Schouwen <reinouts@gnome.org>, 2009, 2010 +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.10\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org\n" +"POT-Creation-Date: 2010-09-08 03:26+0000\n" +"PO-Revision-Date: 2010-09-19 17:01+0100\n" +"Last-Translator: Reinout van Schouwen <reinouts@gnome.org>\n" +"Language-Team: Dutch <vertaling@vrijschrift.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../WebCoreSupport/ChromeClientGtk.cpp:569 +msgid "Upload File" +msgstr "Bestand uploaden" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Invoer_methoden" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM _Links-naar-rechts markering" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM _Rechts-naar-links markering" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Links-naar-rechts _inbedding" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Rechts-naar-links i_nbedding" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Links-naar-rechts _tenietdoen" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Rechts-naar-links t_enietdoen" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Pop richtingsformattering" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS Spatie _zonder breedte" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _koppelaar zonder breedte" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Niet-k_oppelaar zonder breedte" + +#: ../WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Unicode controleteken invoegen " + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1038 +msgid "Load request cancelled" +msgstr "Laadaanvraag geannuleerd" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1044 +msgid "Not allowed to use restricted network port" +msgstr "Gebruik van beperkte netwerkpoort niet toegestaan" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1050 +msgid "URL cannot be shown" +msgstr "Kan URL niet tonen" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1056 +msgid "Frame load was interrupted" +msgstr "Laden van het frame onderbroken" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1062 +msgid "Content with the specified MIME type cannot be shown" +msgstr "Kan inhoud met het aangegeven MIME-type niet tonen" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1068 +msgid "File does not exist" +msgstr "Bestand bestaat niet" + +#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1074 +msgid "Plugin will handle load" +msgstr "Plug-in handelt het laden af" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:385 +#| msgid "play" +msgid "Play" +msgstr "Afspelen" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:387 +#| msgid "pause" +msgid "Pause" +msgstr "Pauzeren" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:533 +msgid "Play / Pause" +msgstr "Afspelen / pauzeren" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:533 +msgid "Play or pause the media" +msgstr "De media afspelen of pauzeren" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:541 +msgid "Time:" +msgstr "Tijd:" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:565 +msgid "Exit Fullscreen" +msgstr "Volledig scherm verlaten" + +#: ../WebCoreSupport/FullscreenVideoController.cpp:565 +msgid "Exit from fullscreen mode" +msgstr "Volledig scherm verlaten" + +#: ../webkit/webkitdownload.cpp:272 +msgid "Network Request" +msgstr "Netwerkaanvraag" + +#: ../webkit/webkitdownload.cpp:273 +msgid "The network request for the URI that should be downloaded" +msgstr "De netwerkaanvraag voor de te downloaden URI" + +#: ../webkit/webkitdownload.cpp:287 +msgid "Network Response" +msgstr "Netwerkantwoord" + +#: ../webkit/webkitdownload.cpp:288 +msgid "The network response for the URI that should be downloaded" +msgstr "Het netwerkantwoord voor de te downloaden URI" + +#: ../webkit/webkitdownload.cpp:302 +msgid "Destination URI" +msgstr "Bestemmings-URI" + +#: ../webkit/webkitdownload.cpp:303 +msgid "The destination URI where to save the file" +msgstr "De bestemmings-URI waar dit bestand opgeslagen moet worden" + +#: ../webkit/webkitdownload.cpp:317 +msgid "Suggested Filename" +msgstr "Gesuggereerde bestandsnaam" + +#: ../webkit/webkitdownload.cpp:318 +msgid "The filename suggested as default when saving" +msgstr "De standaard gesuggereerde bestandsnaam bij het opslaan" + +#: ../webkit/webkitdownload.cpp:335 +msgid "Progress" +msgstr "Voortgang" + +#: ../webkit/webkitdownload.cpp:336 +msgid "Determines the current progress of the download" +msgstr "Bepaalt de huidige voortgang van de download" + +#: ../webkit/webkitdownload.cpp:349 +msgid "Status" +msgstr "Status" + +#: ../webkit/webkitdownload.cpp:350 +msgid "Determines the current status of the download" +msgstr "Bepaalt de huidige status van de download" + +#: ../webkit/webkitdownload.cpp:365 +msgid "Current Size" +msgstr "Huidige grootte" + +#: ../webkit/webkitdownload.cpp:366 +msgid "The length of the data already downloaded" +msgstr "De hoeveelheid reeds gedownloade data" + +#: ../webkit/webkitdownload.cpp:380 +msgid "Total Size" +msgstr "Totale grootte" + +#: ../webkit/webkitdownload.cpp:381 +msgid "The total size of the file" +msgstr "De totale grootte van het bestand" + +#: ../webkit/webkitdownload.cpp:532 +msgid "User cancelled the download" +msgstr "Downloaden door gebruiker gestopt" + +#: ../webkit/webkithittestresult.cpp:148 +msgid "Context" +msgstr "Context" + +#: ../webkit/webkithittestresult.cpp:149 +msgid "Flags indicating the kind of target that received the event." +msgstr "Markeringen die het soort doel beschrijven voor ontvangst van de gebeurtenis." + +#: ../webkit/webkithittestresult.cpp:163 +msgid "Link URI" +msgstr "Verwijzings-URI" + +#: ../webkit/webkithittestresult.cpp:164 +msgid "The URI to which the target that received the event points, if any." +msgstr "De URI waarnaar het doel wijst dat de gebeurtenispunten ontvangen heeft, indien aanwezig." + +#: ../webkit/webkithittestresult.cpp:177 +msgid "Image URI" +msgstr "Afbeeldings-URI" + +#: ../webkit/webkithittestresult.cpp:178 +msgid "" +"The URI of the image that is part of the target that received the event, if " +"any." +msgstr "" +"De URI van de afbeelding die onderdeel is van het doel voor gebeurtenisontvangst, indien aanwezig." + +#: ../webkit/webkithittestresult.cpp:191 +msgid "Media URI" +msgstr "Media-URI" + +#: ../webkit/webkithittestresult.cpp:192 +msgid "" +"The URI of the media that is part of the target that received the event, if " +"any." +msgstr "" +"De URI van de media die onderdeel zijn van het doel voor gebeurtenisontvangst, indien aanwezig." + +#: ../webkit/webkithittestresult.cpp:213 +msgid "Inner node" +msgstr "Ingesloten node" + +#: ../webkit/webkithittestresult.cpp:214 +msgid "The inner DOM node associated with the hit test result." +msgstr "De ingesloten DOM-node die geassocieerd is met het hittestresultaat." + +#: ../webkit/webkitnetworkrequest.cpp:136 +#: ../webkit/webkitnetworkresponse.cpp:134 ../webkit/webkitwebframe.cpp:315 +#: ../webkit/webkitwebhistoryitem.cpp:178 ../webkit/webkitwebresource.cpp:126 +#: ../webkit/webkitwebview.cpp:2653 +msgid "URI" +msgstr "URI" + +#: ../webkit/webkitnetworkrequest.cpp:137 +msgid "The URI to which the request will be made." +msgstr "De URI waarnaar de aanvraag gestuurd wordt." + +#: ../webkit/webkitnetworkrequest.cpp:150 +#: ../webkit/webkitnetworkresponse.cpp:148 +msgid "Message" +msgstr "Bericht" + +#: ../webkit/webkitnetworkrequest.cpp:151 +msgid "The SoupMessage that backs the request." +msgstr "De SoupMessage die achter de aanvraag zit." + +#: ../webkit/webkitnetworkresponse.cpp:135 +msgid "The URI to which the response will be made." +msgstr "De URI waarnaar het antwoord verstuurd wordt." + +#: ../webkit/webkitnetworkresponse.cpp:149 +msgid "The SoupMessage that backs the response." +msgstr "De SoupMessage die achter het antwoord zit." + +#: ../webkit/webkitsecurityorigin.cpp:151 +msgid "Protocol" +msgstr "Protocol" + +#: ../webkit/webkitsecurityorigin.cpp:152 +msgid "The protocol of the security origin" +msgstr "Het protocol van de beveiligingsbron" + +#: ../webkit/webkitsecurityorigin.cpp:165 +msgid "Host" +msgstr "Hostcomputer" + +#: ../webkit/webkitsecurityorigin.cpp:166 +msgid "The host of the security origin" +msgstr "De hostcomputer van de beveiligingsbron" + +#: ../webkit/webkitsecurityorigin.cpp:179 +msgid "Port" +msgstr "Poort" + +#: ../webkit/webkitsecurityorigin.cpp:180 +msgid "The port of the security origin" +msgstr "De poort van de beveiligingsbron" + +#: ../webkit/webkitsecurityorigin.cpp:193 +msgid "Web Database Usage" +msgstr "Web-databasegebruik" + +#: ../webkit/webkitsecurityorigin.cpp:194 +msgid "The cumulative size of all web databases in the security origin" +msgstr "De opgetelde grootte van alle webdatabases in de beveiligingsbron" + +#: ../webkit/webkitsecurityorigin.cpp:206 +msgid "Web Database Quota" +msgstr "Webdatabase-quota" + +#: ../webkit/webkitsecurityorigin.cpp:207 +msgid "The web database quota of the security origin in bytes" +msgstr "De webdatabase-quota voor de beveiligingsbron in bytes" + +#: ../webkit/webkitsoupauthdialog.c:251 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "De site %s vraagt een gebruikersnaam en wachtwoord" + +#: ../webkit/webkitsoupauthdialog.c:281 +msgid "Server message:" +msgstr "Serverbericht:" + +#: ../webkit/webkitsoupauthdialog.c:294 +msgid "Username:" +msgstr "Gebruikersnaam:" + +#: ../webkit/webkitsoupauthdialog.c:296 +msgid "Password:" +msgstr "Wachtwoord:" + +#: ../webkit/webkitsoupauthdialog.c:305 +msgid "_Remember password" +msgstr "_Wachtwoord onthouden" + +#: ../webkit/webkitwebdatabase.cpp:176 +msgid "Security Origin" +msgstr "Beveiligingsbron" + +#: ../webkit/webkitwebdatabase.cpp:177 +msgid "The security origin of the database" +msgstr "De beveiligingsbron van de database" + +#: ../webkit/webkitwebdatabase.cpp:190 ../webkit/webkitwebframe.cpp:301 +msgid "Name" +msgstr "Naam" + +#: ../webkit/webkitwebdatabase.cpp:191 +msgid "The name of the Web Database database" +msgstr "De naam van de Web Database-database" + +#: ../webkit/webkitwebdatabase.cpp:204 +msgid "Display Name" +msgstr "Weergavenaam" + +#: ../webkit/webkitwebdatabase.cpp:205 +msgid "The display name of the Web Storage database" +msgstr "De weergavenaam van de Web Storage-database" + +#: ../webkit/webkitwebdatabase.cpp:218 +msgid "Expected Size" +msgstr "Verwachte grootte" + +#: ../webkit/webkitwebdatabase.cpp:219 +msgid "The expected size of the Web Database database" +msgstr "De verwachte grootte van de Web Database-database" + +#: ../webkit/webkitwebdatabase.cpp:231 +msgid "Size" +msgstr "Grootte" + +#: ../webkit/webkitwebdatabase.cpp:232 +msgid "The current size of the Web Database database" +msgstr "De huidige grootte van de Web Database-database" + +#: ../webkit/webkitwebdatabase.cpp:244 +msgid "Filename" +msgstr "Bestandsnaam" + +#: ../webkit/webkitwebdatabase.cpp:245 +msgid "The absolute filename of the Web Storage database" +msgstr "De absolute bestandsnaam van de Web Storage-database" + +#: ../webkit/webkitwebframe.cpp:302 +msgid "The name of the frame" +msgstr "Naam van het frame" + +#: ../webkit/webkitwebframe.cpp:308 ../webkit/webkitwebhistoryitem.cpp:146 +#: ../webkit/webkitwebview.cpp:2639 +msgid "Title" +msgstr "Titel" + +#: ../webkit/webkitwebframe.cpp:309 +msgid "The document title of the frame" +msgstr "De titel van het huidige frame" + +#: ../webkit/webkitwebframe.cpp:316 +msgid "The current URI of the contents displayed by the frame" +msgstr "De huidige URI van de in het frame weergegeven inhoud" + +#: ../webkit/webkitwebframe.cpp:347 +msgid "Horizontal Scrollbar Policy" +msgstr "Beleid voor horizontale schuifbalk" + +#: ../webkit/webkitwebframe.cpp:348 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Bepaalt het beleid voor de horizontale schuifbalk van het frame" + +#: ../webkit/webkitwebframe.cpp:365 +msgid "Vertical Scrollbar Policy" +msgstr "Beleid voor verticale schuifbalk" + +#: ../webkit/webkitwebframe.cpp:366 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Bepaalt het huidige beleid voor de verticale schuifbalk van het frame." + +#: ../webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "De titel van het geschiedenis-item" + +#: ../webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternatieve titel" + +#: ../webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "De alternatieve titel van het geschiedenis-item" + +#: ../webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "De URI van het geschiedenis-item" + +#: ../webkit/webkitwebhistoryitem.cpp:194 +#: ../webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Originele URI" + +#: ../webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "De originele URI van het geschiedenis-item" + +#: ../webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Laatst bezocht op" + +#: ../webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "De tijd waarop het geschiedenis-item het laatst is bezocht" + +#: ../webkit/webkitwebinspector.cpp:269 +msgid "Web View" +msgstr "Webweergave" + +#: ../webkit/webkitwebinspector.cpp:270 +msgid "The Web View that renders the Web Inspector itself" +msgstr "De webweergave die die Webinspector zelf weergeeft" + +#: ../webkit/webkitwebinspector.cpp:283 +msgid "Inspected URI" +msgstr "Geïnspecteerde URI" + +#: ../webkit/webkitwebinspector.cpp:284 +msgid "The URI that is currently being inspected" +msgstr "De URI die momenteel geïnspecteerd wordt" + +#: ../webkit/webkitwebinspector.cpp:300 +msgid "Enable JavaScript profiling" +msgstr "JavaScript-profilering inschakelen" + +#: ../webkit/webkitwebinspector.cpp:301 +msgid "Profile the executed JavaScript." +msgstr "De uitgevoerde JavaScript profileren." + +#: ../webkit/webkitwebinspector.cpp:316 +msgid "Enable Timeline profiling" +msgstr "Tijdslijn-profilering inschakelen" + +#: ../webkit/webkitwebinspector.cpp:317 +msgid "Profile the WebCore instrumentation." +msgstr "De instrumentering van WebCore profileren." + +#: ../webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Reden" + +#: ../webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "De reden waarom deze navigatie optreedt" + +#: ../webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "De URI die werd aangevraagd als bestemming voor de navigatie" + +#: ../webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Knop" + +#: ../webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "De knop voor het klikken" + +#: ../webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Staat van de optietoets" + +#: ../webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Een bitmask dat de staat van de optietoets representeert" + +#: ../webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Doelframe" + +#: ../webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Het doelframe voor de navigatie" + +#: ../webkit/webkitwebresource.cpp:127 +msgid "The uri of the resource" +msgstr "De URI van de bron" + +#: ../webkit/webkitwebresource.cpp:141 +msgid "MIME Type" +msgstr "MIME-type" + +#: ../webkit/webkitwebresource.cpp:142 +msgid "The MIME type of the resource" +msgstr "De MIME-type van de bron" + +#: ../webkit/webkitwebresource.cpp:156 ../webkit/webkitwebview.cpp:2774 +msgid "Encoding" +msgstr "Codering" + +#: ../webkit/webkitwebresource.cpp:157 +msgid "The text encoding name of the resource" +msgstr "De tekstcoderingsnaam van de bron" + +#: ../webkit/webkitwebresource.cpp:172 +msgid "Frame Name" +msgstr "Framenaam" + +#: ../webkit/webkitwebresource.cpp:173 +msgid "The frame name of the resource" +msgstr "Naam van het frame van de bron" + +#: ../webkit/webkitwebsettings.cpp:241 +msgid "Default Encoding" +msgstr "Standaardcodering" + +#: ../webkit/webkitwebsettings.cpp:242 +msgid "The default encoding used to display text." +msgstr "De standaardcodering om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:250 +msgid "Cursive Font Family" +msgstr "Cursive-lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:251 +msgid "The default Cursive font family used to display text." +msgstr "De standaard Cursive-lettertypefamilie om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:259 +msgid "Default Font Family" +msgstr "Standaard lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:260 +msgid "The default font family used to display text." +msgstr "De standaard lettertypefamilie om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:268 +msgid "Fantasy Font Family" +msgstr "Fantasy-lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:269 +msgid "The default Fantasy font family used to display text." +msgstr "De standaard Fantasy-lettertypefamilie om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:277 +msgid "Monospace Font Family" +msgstr "Monospace-lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:278 +msgid "The default font family used to display monospace text." +msgstr "De standaard lettertypefamilie om vaste-breedte-tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:286 +msgid "Sans Serif Font Family" +msgstr "Sans Serif-lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:287 +msgid "The default Sans Serif font family used to display text." +msgstr "De standaard Sans Serif-lettertypefamilie om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:295 +msgid "Serif Font Family" +msgstr "Serif-lettertypefamilie" + +#: ../webkit/webkitwebsettings.cpp:296 +msgid "The default Serif font family used to display text." +msgstr "De standaard Serif-lettertypefamilie om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:304 +msgid "Default Font Size" +msgstr "Standaard korpsgrootte" + +#: ../webkit/webkitwebsettings.cpp:305 +msgid "The default font size used to display text." +msgstr "De standaard korpsgrootte om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:313 +msgid "Default Monospace Font Size" +msgstr "Standaard Monospace-lettergrootte" + +#: ../webkit/webkitwebsettings.cpp:314 +msgid "The default font size used to display monospace text." +msgstr "De standaard lettergrootte om vaste-breedte-tekst weer te geven." + +# Korpsgrootte/lettergrootte? +#: ../webkit/webkitwebsettings.cpp:322 +msgid "Minimum Font Size" +msgstr "Minimum korpsgrootte" + +#: ../webkit/webkitwebsettings.cpp:323 +msgid "The minimum font size used to display text." +msgstr "De minimum lettergrootte om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:331 +msgid "Minimum Logical Font Size" +msgstr "Minimum logische korpsgrootte" + +#: ../webkit/webkitwebsettings.cpp:332 +msgid "The minimum logical font size used to display text." +msgstr "De minimum logische korpsgrootte om tekst weer te geven." + +#: ../webkit/webkitwebsettings.cpp:351 +msgid "Enforce 96 DPI" +msgstr "96 DPI afdwingen" + +#: ../webkit/webkitwebsettings.cpp:352 +msgid "Enforce a resolution of 96 DPI" +msgstr "Een resolutie van 96 DPI afdwingen" + +#: ../webkit/webkitwebsettings.cpp:360 +msgid "Auto Load Images" +msgstr "Afbeeldingen automatisch laden" + +#: ../webkit/webkitwebsettings.cpp:361 +msgid "Load images automatically." +msgstr "Automatisch afbeeldingen laden." + +#: ../webkit/webkitwebsettings.cpp:369 +msgid "Auto Shrink Images" +msgstr "Afbeeldingen automatisch verkleinen" + +#: ../webkit/webkitwebsettings.cpp:370 +msgid "Automatically shrink standalone images to fit." +msgstr "Automatisch losstaande afbeeldingen passend maken." + +#: ../webkit/webkitwebsettings.cpp:378 +msgid "Print Backgrounds" +msgstr "Achtergronden afdrukken" + +#: ../webkit/webkitwebsettings.cpp:379 +msgid "Whether background images should be printed." +msgstr "Of achtergrondafbeeldingen afgedrukt moeten worden." + +#: ../webkit/webkitwebsettings.cpp:387 +msgid "Enable Scripts" +msgstr "Scripts inschakelen" + +#: ../webkit/webkitwebsettings.cpp:388 +msgid "Enable embedded scripting languages." +msgstr "Ingebedde scripttalen inschakelen." + +#: ../webkit/webkitwebsettings.cpp:396 +msgid "Enable Plugins" +msgstr "Plugins inschakelen" + +#: ../webkit/webkitwebsettings.cpp:397 +msgid "Enable embedded plugin objects." +msgstr "Ingebedde plugin-objecten inschakelen." + +#: ../webkit/webkitwebsettings.cpp:405 +msgid "Resizable Text Areas" +msgstr "Tekstgebieden van grootte veranderbaar" + +#: ../webkit/webkitwebsettings.cpp:406 +msgid "Whether text areas are resizable." +msgstr "Of de grootte van tekstgebieden gewijzigd kan worden." + +#: ../webkit/webkitwebsettings.cpp:413 +msgid "User Stylesheet URI" +msgstr "URI van gebruikersstijlblad" + +#: ../webkit/webkitwebsettings.cpp:414 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "De URI van een stijlblad dat wordt toegepast op elke pagina." + +#: ../webkit/webkitwebsettings.cpp:429 +msgid "Zoom Stepping Value" +msgstr "Stapgrootte voor in- en uitzoomen" + +#: ../webkit/webkitwebsettings.cpp:430 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"De hoeveelheid waarmee het zoomniveau verandert bij het in- en uitzoomen." + +#: ../webkit/webkitwebsettings.cpp:448 +msgid "Enable Developer Extras" +msgstr "Extraatjes voor ontwikkelaars" + +#: ../webkit/webkitwebsettings.cpp:449 +msgid "Enables special extensions that help developers" +msgstr "Schakelt speciale uitbreidingen in die ontwikkelaars helpen" + +#: ../webkit/webkitwebsettings.cpp:469 +msgid "Enable Private Browsing" +msgstr "Privé-browsen inschakelen" + +#: ../webkit/webkitwebsettings.cpp:470 +msgid "Enables private browsing mode" +msgstr "Schakelt de stand voor privé-browsen in" + +#: ../webkit/webkitwebsettings.cpp:485 +msgid "Enable Spell Checking" +msgstr "Spellingcontrole inschakelen" + +#: ../webkit/webkitwebsettings.cpp:486 +msgid "Enables spell checking while typing" +msgstr "Schakelt spellingcontrole tijdens het typen in" + +#: ../webkit/webkitwebsettings.cpp:509 +msgid "Languages to use for spell checking" +msgstr "Te gebruiken talen bij spellingcontrole" + +#: ../webkit/webkitwebsettings.cpp:510 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Kommagescheiden lijst van talen voor spellingcontrole" + +#: ../webkit/webkitwebsettings.cpp:524 +msgid "Enable Caret Browsing" +msgstr "Cursor-browsen inschakelen" + +#: ../webkit/webkitwebsettings.cpp:525 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Of toegankelijkheidsgeoptimaliseerde toetsenbordnavigatie is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:540 +msgid "Enable HTML5 Database" +msgstr "HTML5-database inschakelen" + +#: ../webkit/webkitwebsettings.cpp:541 +msgid "Whether to enable HTML5 database support" +msgstr "Of HTML5-databaseondersteuning is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:556 +msgid "Enable HTML5 Local Storage" +msgstr "HTML5-lokale opslag inschakelen" + +#: ../webkit/webkitwebsettings.cpp:557 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Of HTML5-lokale opslag ingeschakeld moet zijn" + +#: ../webkit/webkitwebsettings.cpp:571 +msgid "Enable XSS Auditor" +msgstr "XSS-auditor inschakelen" + +#: ../webkit/webkitwebsettings.cpp:572 +msgid "Whether to enable the XSS auditor" +msgstr "Of de XSS-auditor is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:590 +msgid "Enable Spatial Navigation" +msgstr "Ruimtelijke navigatie inschakelen" + +#: ../webkit/webkitwebsettings.cpp:591 +msgid "Whether to enable Spatial Navigation" +msgstr "Of ruimtelijke navigatie is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:608 +msgid "User Agent" +msgstr "User-agent" + +#: ../webkit/webkitwebsettings.cpp:609 +msgid "The User-Agent string used by WebKitGtk" +msgstr "De User-Agent-tekenreeks die WebKitGtk gebruikt" + +#: ../webkit/webkitwebsettings.cpp:624 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript kan automatisch vensters openen" + +#: ../webkit/webkitwebsettings.cpp:625 +msgid "Whether JavaScript can open windows automatically" +msgstr "Of JavaScript automatisch vensters kan openen" + +#: ../webkit/webkitwebsettings.cpp:639 +msgid "JavaScript can access Clipboard" +msgstr "JavaScript heeft toegang tot klembord" + +#: ../webkit/webkitwebsettings.cpp:640 +msgid "Whether JavaScript can access Clipboard" +msgstr "Of JavaScript het klembord kan benaderen" + +#: ../webkit/webkitwebsettings.cpp:656 +msgid "Enable offline web application cache" +msgstr "Offline webapplicatiebuffer inschakelen" + +#: ../webkit/webkitwebsettings.cpp:657 +msgid "Whether to enable offline web application cache" +msgstr "Of de offline webapplicatiebuffer is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:684 +msgid "Editing behavior" +msgstr "Gedrag bij bewerken" + +#: ../webkit/webkitwebsettings.cpp:685 +msgid "The behavior mode to use in editing mode" +msgstr "De gedragsmodus in de bewerkingsstand" + +#: ../webkit/webkitwebsettings.cpp:701 +msgid "Enable universal access from file URIs" +msgstr "Universele toegang vanaf bestands-URI's inschakelen" + +#: ../webkit/webkitwebsettings.cpp:702 +msgid "Whether to allow universal access from file URIs" +msgstr "Of universele toegang vanaf bestands-URI's is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:717 +msgid "Enable DOM paste" +msgstr "DOM-plakken inschakelen" + +#: ../webkit/webkitwebsettings.cpp:718 +msgid "Whether to enable DOM paste" +msgstr "Of plakken vanuit het DOM is ingeschakeld" + +#: ../webkit/webkitwebsettings.cpp:736 +msgid "Tab key cycles through elements" +msgstr "Tab-toets wandelt door elementen" + +#: ../webkit/webkitwebsettings.cpp:737 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Of de tab-toets door de elementen op de pagina wandelt." + +#: ../webkit/webkitwebsettings.cpp:757 +msgid "Enable Default Context Menu" +msgstr "Standaard-contextmenu inschakelen" + +#: ../webkit/webkitwebsettings.cpp:758 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Schakelt het afhandelen van klikken met de tweede muisknop in voor het " +"creëren van het standaard contextmenu" + +#: ../webkit/webkitwebsettings.cpp:778 +msgid "Enable Site Specific Quirks" +msgstr "Site-specifieke eigenaardigheden inschakelen" + +#: ../webkit/webkitwebsettings.cpp:779 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Schakelt omzeilingen in voor compatibiliteit met specifieke websites" + +#: ../webkit/webkitwebsettings.cpp:801 +msgid "Enable page cache" +msgstr "Paginabuffer inschakelen" + +#: ../webkit/webkitwebsettings.cpp:802 +msgid "Whether the page cache should be used" +msgstr "Of de paginabuffer gebruikt moet worden" + +#: ../webkit/webkitwebsettings.cpp:822 +msgid "Auto Resize Window" +msgstr "Venstergrootte automatisch aanpassen" + +#: ../webkit/webkitwebsettings.cpp:823 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Grootte van topniveauvenster automatisch aanpassen wanneer pagina hierom " +"vraagt" + +#: ../webkit/webkitwebsettings.cpp:855 +msgid "Enable Java Applet" +msgstr "Java-applet inschakelen" + +#: ../webkit/webkitwebsettings.cpp:856 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Of ondersteuning voor Java-applets via <applet> ingeschakeld is" + +#: ../webkit/webkitwebview.cpp:2640 +msgid "Returns the @web_view's document title" +msgstr "Geeft de documenttitel van de @web_view terug" + +#: ../webkit/webkitwebview.cpp:2654 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Geeft de huidige URI terug van de inhoud die de @web_view weergeeft" + +#: ../webkit/webkitwebview.cpp:2667 +msgid "Copy target list" +msgstr "Kopieerdoellijst" + +#: ../webkit/webkitwebview.cpp:2668 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"De lijst met targets die deze webweergave ondersteunt voor het kopiëren van " +"het klembord" + +#: ../webkit/webkitwebview.cpp:2681 +msgid "Paste target list" +msgstr "Plakdoellijst" + +#: ../webkit/webkitwebview.cpp:2682 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"De lijst met targets die deze webview ondersteunt voor het plakken van het " +"klembord" + +#: ../webkit/webkitwebview.cpp:2688 +msgid "Settings" +msgstr "Instellingen" + +#: ../webkit/webkitwebview.cpp:2689 +msgid "An associated WebKitWebSettings instance" +msgstr "Een geassocieerde instantie van WebKitWebSettings" + +#: ../webkit/webkitwebview.cpp:2702 +msgid "Web Inspector" +msgstr "Web-inspector" + +#: ../webkit/webkitwebview.cpp:2703 +msgid "The associated WebKitWebInspector instance" +msgstr "De geassocieerde instantie van WebKitWebInspector" + +#: ../webkit/webkitwebview.cpp:2723 +msgid "Editable" +msgstr "Bewerkbaar" + +#: ../webkit/webkitwebview.cpp:2724 +msgid "Whether content can be modified by the user" +msgstr "Of de tekst gewijzigd kan worden door de gebruiker" + +#: ../webkit/webkitwebview.cpp:2730 +msgid "Transparent" +msgstr "Transparant" + +#: ../webkit/webkitwebview.cpp:2731 +msgid "Whether content has a transparent background" +msgstr "Of de inhoud een transparante achtergrond heeft" + +#: ../webkit/webkitwebview.cpp:2744 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: ../webkit/webkitwebview.cpp:2745 +msgid "The level of zoom of the content" +msgstr "Zoomfactor van de inhoud" + +#: ../webkit/webkitwebview.cpp:2760 +msgid "Full content zoom" +msgstr "Zoomen op volledige inhoud" + +#: ../webkit/webkitwebview.cpp:2761 +msgid "Whether the full content is scaled when zooming" +msgstr "Of de volledige inhoud op schaal wordt gebracht bij het zoomen" + +#: ../webkit/webkitwebview.cpp:2775 +msgid "The default encoding of the web view" +msgstr "Standaard codering van de webweergave" + +#: ../webkit/webkitwebview.cpp:2788 +msgid "Custom Encoding" +msgstr "Aangepaste codering" + +#: ../webkit/webkitwebview.cpp:2789 +msgid "The custom encoding of the web view" +msgstr "De aangepaste codering van de webweergave" + +#: ../webkit/webkitwebview.cpp:2841 +msgid "Icon URI" +msgstr "Pictogram-URI" + +#: ../webkit/webkitwebview.cpp:2842 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "De URI voor het favicon van de #WebKitWebView." + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Indienen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Herinitialiseren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Dit is een doorzoekbare index. Voer zoekwoorden in: " + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Kies een bestand" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Geen)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Verwijzing openen in _nieuw venster" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "Bestand _downloaden" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Verwijzings_adres kopiëren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Af_beelding openen in nieuw venster" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Afbeelding opslaan _als…" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Afbeelding _kopiëren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "_Deelvenster openen in nieuw venster" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "Ve_rversen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Geen suggesties gevonden" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "Spelling _negeren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Spelling leren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "Het web door_zoeken" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "O_pzoeken in woordenboek" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "Koppeling _openen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "_Grammatica negeren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Spelling en _grammatica" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "Spelling en grammatica _tonen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "Spelling en grammatica ver_bergen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Het document nu _controleren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "_Spelling controleren tijdens het typen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "_Grammatica controleren naast spelling" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Lettertype" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Omtrek" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "_Element inspecteren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Geen recente zoekopdrachten" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Recente zoekopdrachten" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "Recente zoekopdrachten _wissen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "term" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definitie" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "druk" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "selecteren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "activeren" + +# check / uncheck is aankruisen / deselecteren? +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "deselecteren" + +# check / uncheck is aankruisen / deselecteren? +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "aankruisen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "springen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:341 +msgid "Missing Plug-in" +msgstr "Ontbrekende plug-in" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Plug-in Failure" +msgstr "Fout in plug-in" + +#. FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number. +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:353 +msgid " files" +msgstr " bestanden" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:358 +msgid "Unknown" +msgstr "Onbekend" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:363 +#, c-format +msgctxt "Title string for images" +msgid "%s (%dx%d pixels)" +msgstr "%s (%d×%d pixels)" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "Loading..." +msgstr "Laden…" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:380 +msgid "Live Broadcast" +msgstr "Live-uitzending" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:386 +msgid "audio element controller" +msgstr "besturing audio-element" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:388 +msgid "video element controller" +msgstr "besturing video-element" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:390 +msgid "mute" +msgstr "dempen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:392 +msgid "unmute" +msgstr "geluid aan" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:394 +msgid "play" +msgstr "afspelen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:396 +msgid "pause" +msgstr "pauze" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:398 +msgid "movie time" +msgstr "afspeelduur" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:400 +msgid "timeline slider thumb" +msgstr "tijdschuifbalk-miniatuur" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:402 +msgid "back 30 seconds" +msgstr "30 seconden terug" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:404 +msgid "return to realtime" +msgstr "terug naar realtime" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:406 +msgid "elapsed time" +msgstr "verstreken tijd" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:408 +msgid "remaining time" +msgstr "tijd te gaan" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:410 +msgid "status" +msgstr "status" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:412 +msgid "fullscreen" +msgstr "volledig scherm" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:414 +msgid "fast forward" +msgstr "snel vooruit" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:416 +msgid "fast reverse" +msgstr "snel achteruit" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "show closed captions" +msgstr "ondertiteling tonen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "hide closed captions" +msgstr "ondertiteling verbergen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:429 +msgid "audio element playback controls and status display" +msgstr "afspeelbesturing en statusweergave audio-element" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:431 +msgid "video element playback controls and status display" +msgstr "afspeelbesturing en statusweergave video-element" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:433 +msgid "mute audio tracks" +msgstr "audiosporen dempen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:435 +msgid "unmute audio tracks" +msgstr "audiosporen laten horen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:437 +msgid "begin playback" +msgstr "afspelen beginnen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:439 +msgid "pause playback" +msgstr "afspelen pauzeren" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:441 +msgid "movie time scrubber" +msgstr "filmtijdscrubber" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:443 +msgid "movie time scrubber thumb" +msgstr "filmtijdscrubber-miniatuur" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:445 +msgid "seek movie back 30 seconds" +msgstr "30 seconden terugzoeken in film" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:447 +msgid "return streaming movie to real time" +msgstr "terugkeren naar realtime in streamende film" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:449 +msgid "current movie time in seconds" +msgstr "huidige filmtijd in seconden" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:451 +msgid "number of seconds of movie remaining" +msgstr "aantal seconden film te gaan" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:453 +msgid "current movie status" +msgstr "huidige filmstatus" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:455 +msgid "seek quickly back" +msgstr "snel achteruit zoeken" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:457 +msgid "seek quickly forward" +msgstr "snel vooruit zoeken" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:459 +msgid "Play movie in fullscreen mode" +msgstr "Film afspelen in volledig scherm" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "start displaying closed captions" +msgstr "beginnen met tonen van ondertiteling" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:463 +msgid "stop displaying closed captions" +msgstr "stoppen met tonen van ondertiteling" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:472 +msgid "indefinite time" +msgstr "onbepaalde tijd" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "value missing" +msgstr "waarde ontbreekt" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:508 +msgid "type mismatch" +msgstr "type komt niet overeen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:513 +msgid "pattern mismatch" +msgstr "patroon komt niet overeen" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:518 +msgid "too long" +msgstr "te lang" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:523 +msgid "range underflow" +msgstr "onder bereik" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:528 +msgid "range overflow" +msgstr "over bereik" + +#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:533 +msgid "step mismatch" +msgstr "stap komt niet overeen" + +#~ msgid "_Searchable Index" +#~ msgstr "Door_zoekbare index" diff --git a/Source/WebKit/gtk/po/pa.po b/Source/WebKit/gtk/po/pa.po new file mode 100644 index 0000000..418192e --- /dev/null +++ b/Source/WebKit/gtk/po/pa.po @@ -0,0 +1,1095 @@ +# This file is put in the public domain. +# +# A S Alam <aalam@users.sf.net>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-02-18 18:25+0530\n" +"Last-Translator: A S Alam <aalam@users.sf.net>\n" +"Language-Team: Punjabi/Panjabi <kde-i18n-doc@kde.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "ਫਾਇਲ ਅੱਪਲੋਡ" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "ਇੰਪੁੱਟ ਢੰਗ(_M)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਨਿਸ਼ਾਨ(_L)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਨਿਸ਼ਾਨ(_R)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਇੰਬੈੱਡ(_e)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਇੰਬੈੱਡ(_m)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਉੱਤੇ ਲਿਖੋ(_o)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਉੱਤੇ ਲਿਖੋ(_v)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF ਪੋਪ ਦਿਸ਼ਾ ਫਾਰਮੈਟ(_P)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS ਸਿਫਰ ਚੌੜਾਈ ਥਾਂ(_Z)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ ਸਿਫ਼ਰ ਚੌੜਾਈ ਜੁਆਇੰਨਰ(_j)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ ਸਿਫ਼ਰ ਚੌੜਾਈ ਨਾ-ਜੁਆਇੰਨਰ(_n)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "ਯੂਨੀਕੋਡ ਕੰਟਰੋਲ ਕਰੈਕਟਰ ਪਾਉ(_I)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "ਨੈੱਟਵਰਕ ਮੰਗ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "URL ਲਈ ਨੈੱਟਵਰਕ ਮੰਗ, ਜਿਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾਣਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "ਨੈੱਟਵਰਕ ਮੰਗ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "URL ਲਈ ਨੈੱਟਵਰਕ ਮੰਗ, ਜਿਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾਣਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "ਟਿਕਾਣਾ URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "ਟਿਕਾਣਾ URI, ਜਿੱਥੇ ਫਾਇਲ ਸੰਭਾਲਣੀ ਹੈ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "ਸੁਝਾਇਆ ਫਾਇਲ-ਨਾਂ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "ਜਦੋਂ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੋਵੇ ਤਾਂ ਡਿਫਾਲਟ ਸੁਝਾਇਆ ਫਾਇਲ-ਨਾਂ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "ਤਰੱਕੀ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "ਹਾਲਤ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "ਮੌਜੂਦਾ ਡਾਊਨਲੋਡ ਦੀ ਹਾਲਤ ਜਾਣੋ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "ਮੌਜੂਦਾ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "ਪਹਿਲਾਂ ਹੀ ਡਾਊਨਲੋਡ ਕੀਤੇ ਗਏ ਡਾਟੇ ਦੀ ਲੰਬਾਈ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "ਕੁੱਲ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "ਫਾਇਲ ਦਾ ਕੁੱਲ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "ਯੂਜ਼ਰ ਨੇ ਡਾਊਨਲੋਡ ਰੱਦ ਕੀਤਾ" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "ਸਾਈਟ %s ਨੇ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "ਯੂਜ਼ਰ ਨਾਂ:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "ਪਾਸਵਰਡ:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "ਨਾਂ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "ਫਰੇਮ ਦਾ ਨਾਂ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "ਟਾਈਟਲ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "ਫਰੇਮ ਦਾ ਡੌਕੂਮੈਂਟ ਟਾਈਟਲ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "ਫਰੇਮ ਵਲੋਂ ਵੇਖਾਈ ਜਾ ਰਹੀ ਸਮੱਗਰੀ ਦਾ ਮੌਜੂਦਾ URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਟਾਈਟਲ" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "ਬਦਲਵਾਂ ਟਾਈਟਲ" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਬਦਲਵਾਂ ਟਾਈਟਲ" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "ਅਸਲ URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਅਸਲੀ URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "ਆਖਰੀ ਵਾਰ ਖੋਲ੍ਹਣ ਸਮਾਂ" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "ਸਮਾਂ, ਜਿਸ ਦੌਰਾਨ ਅਤੀਤ ਆਈਟਮ ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ ਸੀ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "ਵੈੱਬ ਝਲਕ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "ਵੈੱਬ ਝਲਕ, ਜੋ ਕਿ ਵੈੱਬ ਇੰਸਪੈਕਟਰ ਖੁਦ ਰੈਂਡਰ ਕਰਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "ਜਾਂਚਿਆ URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "URI ਜੋ ਇਸ ਸਮੇਂ ਜਾਂਚਿਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਚਲਾਉਣ ਲਈ ਪਰੋਫਾਇਲ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "ਕਾਰਨ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "ਕਾਰਨ ਕਿ ਕਿਉਂ ਇਹ ਨੇਵੀਗੇਸ਼ਨ ਹੋਈ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI, ਜੋ ਕਿ ਨੇਵੀਗੇਸ਼ਨ ਲਈ ਟਾਰਗੇਟ ਵਜੋਂ ਚਾਹੀਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "ਬਟਨ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "ਕਲਿੱਕ ਕਰਨ ਵਰਤਣ ਵਾਸਤੇ ਬਟਨ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "ਮਾਡੀਫਾਇਰ ਹਾਲਤ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "ਬਿਟਮਾਸਕ ਮਾਡੀਫਾਈਰ ਸਵਿੱਚਾਂ ਦੀ ਹਾਲਤ ਵੇਖਾਉਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "ਫਰੇਮ ਦਾ ਨਾਂ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "URI, ਜੋ ਕਿ ਨੇਵੀਗੇਸ਼ਨ ਲਈ ਟਾਰਗੇਟ ਵਜੋਂ ਚਾਹੀਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "ਵੇਖਾਏ ਜਾ ਰਹੇ ਟੈਕਸਟ ਲਈ ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "ਕਰਸਵ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਕਰਸਵ ਫੋਂਟ ਵਰਗ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "ਫੈਂਸੀ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਫੈਂਸੀ ਫੋਂਟ ਵਰਗ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "ਮੋਨੋਸਪੇਸ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ, ਜੋ ਮੋਨੋਸਪੇਸ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣਾ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "ਸੈਨਜ਼ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਸੈਨਜ਼ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਫੋਂਟ ਸਾਈਜ਼।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "ਡਿਫਾਲਟ ਮੋਨੋਸਮਪੇਸ ਫੋਂਟ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਸਾਈਜ਼, ਜੋ ਮੋਨੋਸਪੇਸ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣਾ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "ਘੱਟੋ-ਘੱਟ ਫੋਂਟ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਸਤੇ ਘੱਟੋ-ਘੱਟ ਫੋਟ ਸਾਈਜ਼।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "ਘੱਟੋ-ਘੱਟ ਲਾਜ਼ੀਕਲ ਫੋਂਟ ਸਾਈਜ਼" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "ਡਿਸਪਲੇਅ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਘੱਟੋ-ਘੱਟ ਲਾਜ਼ੀਕਲ ਫੋਂਟ ਸਾਈਜ਼ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "96 DPI ਲਈ ਮਜ਼ਬੂਰ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "੯੬ DPI ਦੇ ਰੈਜ਼ੋਲੂਸ਼ਨ ਲਈ ਮਜ਼ਬੂਰ ਕਰੋ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "ਚਿੱਤਰ ਆਟੋ ਲੋਡ ਕਰੋ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "ਚਿੱਤਰ ਆਟੋਮੈਟਿਕ ਲੋਡ ਕਰੋ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "ਚਿੱਤਰ ਆਟੋ ਸੁੰਘੜੋ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "ਇੱਕਲੇ ਚਿੱਤਰਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਆਟੋਮੈਟਿਕ ਸੁੰਘੜੋ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "ਬੈਕਗਰਾਊਂਡ ਪਰਿੰਟ ਕਰੋ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "ਕੀ ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰਾਂ ਨੂੰ ਛਾਪਣਾ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "ਇੰਬੈੱਡ ਸਕ੍ਰਿਪਟ ਭਾਸ਼ਾਵਾਂ ਚਾਲੂ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "ਪਲੱਗਇਨ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "ਇੰਬੈੱਡ ਪਲੱਗਇਨ ਆਬਜੈਕਟ ਚਾਲੂ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "ਮੁੜ-ਆਕਾਰ ਯੋਗ ਟੈਕਸਟ ਖੇਤਰ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "ਕੀ ਟੈਕਸਟ ਖੇਤਰ ਮੁੜ-ਆਕਾਰ ਯੋਗ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "ਯੂਜ਼ਰ ਸਟਾਇਲਸ਼ੀਟ URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "ਸਟਾਈਲਸ਼ੀਟ ਦਾ URI, ਜੋ ਕਿ ਹਰੇਕ ਪੇਜ਼ ਉੱਤੇ ਲਾਗੂ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "ਜ਼ੂਮ ਸਟਿੱਪਿੰਗ ਮੁੱਲ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "ਜਦੋਂ ਜ਼ੂਮ ਇਨ ਜਾਂ ਆਉਟ ਕੀਤਾ ਜਾਵੇ ਤਾਂ ਜ਼ੂਮ ਲੈਵਲ ਬਦਲਣ ਦਾ ਮੁੱਲ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "ਡਿਵੈਲਪਰ ਐਕਸਟਰਾ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "ਖਾਸ ਇਕਸਟੈਨਸ਼ਨ ਚਾਲੂ ਕਰਦਾ ਹੈ, ਜੋ ਡਿਵੈਲਪਰਾਂ ਲਈ ਸਹਾਇਕ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਿੰਗ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਡ ਮੋਡ ਚਾਲੂ ਕਰੋ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "ਲਿਖਣ ਦੇ ਦੌਰਾਨ ਹੀ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_T)" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਿੰਗ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "ਕੀ ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰਾਂ ਨੂੰ ਛਾਪਣਾ ਹੈ।" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "@web_view ਦਾ ਡੌਕੂਮੈਂਟ ਟਾਈਟਲ ਦਿੰਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "@web_view ਵਲੋਂ ਵੇਖਾਈ ਜਾ ਰਹੀ ਸਮੱਗਰੀ ਦਾ ਮੌਜੂਦਾ URI ਦਿੰਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "ਟਾਰਗੇਟ ਲਿਸਟ ਕਾਪੀ ਕਰੋ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "ਕਲਿੱਪਬੋਰਡ ਕਾਪੀ ਕਰਨ ਲਈ ਇਸ ਵੈੱਬ ਝਲਕ ਸਹਿਯੋਗ ਵਾਸਤੇ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "ਟਾਰਗੇਟ ਲਿਸਟ ਚੇਪੋ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "ਕਲਿੱਪਬੋਰਡ ਪੇਸਟਿੰਗ ਲਈ ਇਸ ਵੈੱਬ ਝਲਕ ਸਹਿਯੋਗ ਵਾਸਤੇ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "ਸੈਟਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "ਸਬੰਧਤ WebKitWebSettings ਮੌਕਾ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "ਵੈੱਬ ਇੰਸਪੈਕਟਰ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "ਸਬੰਧਤ WebKitWebInspector ਮੌਕਾ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "ਸੋਧਯੋਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "ਕੀ ਸਮੱਗਰੀ ਨੂੰ ਯੂਜ਼ਰ ਵਲੋਂ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "ਟਰਾਂਸਪਰੇਟ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "ਕੀ ਸਮੱਗਰੀ ਦੀ ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ ਹੋਵੇ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "ਜ਼ੂਮ ਲੈਵਲ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "ਸਮੱਗਰੀ ਦਾ ਜ਼ੂਮ ਲੈਵਲ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "ਪੂਰੀ ਸਮੱਗਰੀ ਜ਼ੂਮ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "ਜਦੋਂ ਜ਼ੂਮ ਕਰਨਾ ਹੋਵੇ ਤਾਂ ਕੀ ਪੂਰੀ ਸਮਗੱਰੀ ਕਰਨੀ ਹੈ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "ਇੰਕੋਡਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "ਵੈਬ ਝਲਕ ਲਈ ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "ਪਸੰਦੀਦਾ ਇੰਕੋਡਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "ਵੈੱਬ ਝਲਕ ਲਈ ਕਸਟਮ ਇੰਕੋਡਿੰਗ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "ਭੇਜੋ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "ਮੁੜ-ਸੈੱਟ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "ਫਾਇਲ ਚੁਣੋ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(ਕੋਈ ਨਹੀਂ)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "ਲਿੰਕ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_W)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "ਲਿੰਕ ਕੀਤੀ ਫਾਇਲ ਡਾਊਨਲੋਡ ਕਰੋ(_D)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "ਲਿੰਕ ਟਿਕਾਣਾ ਕਾਪੀ ਕਰੋ(_a)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "ਚਿੱਤਰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "ਚਿੱਤਰ ਇੰਝ ਸੰਭਾਲੋ(_v)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "ਚਿੱਤਰ ਕਾਪੀ ਕਰੋ(_y)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "ਫਰੇਮ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "ਮੁੜ-ਲੋਡ ਕਰੋ(_R)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ ਲੱਭਿਆ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "ਸਪੈਲਿੰਗ ਅਣਡਿੱਠੇ(_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "ਸਪੈਲਿੰਗ ਸਿੱਖੋ(_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "ਵੈੱਬ ਉੱਤੇ ਖੋਜ(_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ ਖੋਜੋ(_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "ਲਿੰਕ ਖੋਲ੍ਹੋ(_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "ਗਰਾਮਰਡ ਅਣਡਿੱਠੀ(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ ਵੇਖੋ(_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ ਓਹਲੇ(_H)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "ਡੌਕੂਮੈਂਟ ਹੁਣੇ ਚੈੱਕ ਕਰੋ(_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "ਲਿਖਣ ਦੇ ਦੌਰਾਨ ਹੀ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_T)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "ਗਰਾਮਰ ਨਾਲ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "ਫੋਂਟ(_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "ਆਉਟਲਾਈਨ(_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "ਐਲੀਮੈਂਟ ਜਾਂਚੋ(_E)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "ਕੋਈ ਤਾਜ਼ਾ ਖੋਜ ਨਹੀਂ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "ਤਾਜ਼ਾ ਖੋਜ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "ਤਾਜ਼ਾ ਖੋਜਾਂ ਸਾਫ਼ ਕਰੋ(_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "ਸ਼ਬਦ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "ਪ੍ਰੀਭਾਸ਼ਾ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "ਦੱਬੋ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "ਚੁਣੋ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "ਐਕਟੀਵੇਟ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "ਅਣ-ਚੋਣ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "ਚੋਣ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "ਜੰਪ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " ਫਾਇਲਾਂ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "ਹਾਲਤ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "ਪ੍ਰੀਭਾਸ਼ਾ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "ਖੋਜਯੋਗ ਇੰਡੈਕਸ(_S)" diff --git a/Source/WebKit/gtk/po/pt.po b/Source/WebKit/gtk/po/pt.po new file mode 100644 index 0000000..b99048d --- /dev/null +++ b/Source/WebKit/gtk/po/pt.po @@ -0,0 +1,1096 @@ +# webkit's Portuguese translation. +# This file is put in the public domain. +# António Lima <amrlima@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.22\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-08 01:09+0000\n" +"Last-Translator: António Lima <amrlima@gmail.com>\n" +"Language-Team: gnome_pt@yahoogroups.com\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.5.1\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Enviar Ficheiro" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Métodos de Introdução" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LMR marca e_squerda-para-direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM marca _direita-para-esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE _embutidura esquerda-para-direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE e_mbutidura direita-para-esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO s_obrepor esquerda-para-direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO so_brepor direita-para-esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF formatação direccional _Pop" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS espaço de largura _zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _união de largura zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ _não união de largura zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Inserir Carácter de Controlo Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Pedido de Rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "O pedido de rede para o URI que deve ser transferido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Resposta de Rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "A resposta de rede para o URI que deve ser transferido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI de Destino" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "O URI de destino onde gravar o ficheiro" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Nome de Ficheiro Sugerido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "O nome de ficheiro sugerido por omissão ao gravar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Progresso" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determina o processo actual da transferência" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Estado" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determina o estado actual da transferência" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Tamanho Actual" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "O tamanho dos dados já transferidos" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Tamanho Total" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "O tamanho total do ficheiro" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "O utilizador cancelou a transferência" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Um nome de utilizador e senha estão a ser pedidos pelo site %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Mensagem do servidor:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Nome de Utilizador:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Senha:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Recordar senha" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Nome" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "O nome da moldura" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Título" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "O título de documento da moldura" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "O URI actual dos conteúdos apresentados pela moldura" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Política da Barra de Deslocamento Horizontal" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Determina a política actual para a barra de deslocamento horizontal da " +"moldura." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Política da Barra de Deslocamento Vertical" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Determina a política actual para a barra de deslocamento vertical da " +"moldura." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "O titulo do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Título Alternativo" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "O titulo alternativo do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "O URI do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI Original" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "O URI original do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Hora da última visita" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "A hora à qual o item do histórico foi visitado pela última vez" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Vista Web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "A vista Web que renderiza o próprio Web Inspector" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI Inspeccionado" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "O URI que se encontra actualmente a ser inspeccionado" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Activar Perfilar JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Perfilar o JavaScript executado." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Activar perfilar linha temporal" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Perfilar a instrumentação WebCore." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Razão" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "A razão pela qual esta navegação está a ocorrer" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "O URI que foi pedido como alvo para a navegação" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Botão" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "O botão utilizado para clicar" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Estado do modificador" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Uma bitmask representando o estado das chaves do modificador" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Moldura alvo" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "A moldura alvo para a navegação" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Codificação Por Omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "A codificação por omissão utilizada para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Família de Fonte Cursive" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "A família de fonte Cursive utilizada por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Família de Fonte Por Omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "A família de fonte utilizada por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Família de Fonte Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "A família de fonte Fantasy utilizada por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Família de Fonte Mono-espaçada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" +"A família de fonte mono-espaçada utilizada por omissão para apresentar " +"texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Família de Fonte Sem Serifa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" +"A família de fonte Sem Serifa utilizada por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Família de Fonte Serifa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "A família de fonte Serifa utilizada por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Tamanho de Fonte Por Omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "O tamanho de fonte utilizado por omissão para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Tamanho de Fonte Mono-espaçada Por Omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "O tamanho de fonte mono-espaçada utilizado para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Tamanho Mínimo de Fonte" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "O tamanho mínimo de fonte utilizado para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Tamanho Mínimo de Fonte Lógica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "O tamanho mínimo de fonte lógica utilizado para apresentar texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Forçar 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Forçar uma resolução de 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Carregar Imagens Automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Carregar imagens automaticamente." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Diminuir Imagens Automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Diminuir automaticamente imagens individuais para caber." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Imprimir Fundos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Se as imagens de fundo devem ser impressas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Activar Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Activar linguagens procedimentais embutidas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Activar Plugins" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Activar objectos plugin embutidos." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Áreas de Texto Redimensionáveis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Se as áreas de texto são redimensionáveis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI de Folha de Estilos do Utilizador" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "O URI de uma folha de estilos que é aplicada a todas as páginas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Valor de Alteração de Zoom" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"O valor pelo qual o nível de zoom é alterado ao ser aumentado ou diminuído." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Activar Extras de Programador" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Activar extensões especiais que ajudam os programadores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Activar Navegação Privada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Activa o modo de navegação privada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Activar Verificação Ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Activa a verificação ortográfica ao escrever" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Idiomas a utilizar para verificação ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Lista separada por vírgulas de idiomas a utilizar na verificação ortográfica" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Activar Navegação com Cursor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Se deve ser activada a navegação com teclado melhorada para acessibilidade" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Activar Base de Dados HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Se deve ser activado o suporte a base de dados HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Activar Armazenamento Local HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Se deve ser activado o suporte a armazenamento local HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Activar Auditor XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Se deve ser activado o auditor XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Agente de Utilizador" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "A cadeia de caracteres de Agente de Utilizador utilizada pelo WebKitGtk" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript pode abrir janelas automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Se o JavaScript pode abrir janelas automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Activar cache de aplicações web em modo desligado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Se deve ser activada a cache de aplicações web em modo desligado" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Comportamento de edição" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "O modo de comportamento utilizar no modo de edição" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Activar acesso universal a partir de URIs de ficheiro" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Se deve ser activado o acesso universal a partir de URIs de ficheiro" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Activar colar DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Se deve ser activado o colar DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tecla Tab circula pelos elementos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Se a tecla tab circula pelos elementos da página." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Activar Menu de Contexto por Omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Activa a gestão de cliques com o botão direito para a criação do menu de " +"contexto por omissão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Activar Truques Específicos da Página" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Activar as formas de contornar problemas específicas da página" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Activar cache de página" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Se a cache da página deve ser utilizada" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Redimensionar Janela Automaticamente" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Redimensionar automaticamente janela do nível superior quando é pedido pela " +"página" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Activar Applet Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Se o suporte a Java Applet por <applet> deve estar activo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Devolve o título de documento @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Devolve o URI actual dos conteúdos apresentados pelo @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Copiar lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"A lista de destinos que esta vista web suporta para cópia da área de " +"transferência" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Colar lista de destinos" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"A lista de destinos que esta vista web suporta para colagem da área de " +"transferência" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Definições" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Uma instância associada WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Inspector Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "A instância associada WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Possível Editar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Se o conteúdo pode ser modificado pelo utilizador" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Se o conteúdo possui um fundo transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Nível de zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "O nível de zoom do conteúdo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Zoom total de conteúdo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Se todo o conteúdo é escalado ao alterar o zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Codificação" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "A codificação por omissão da vista web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Codificação Personalizada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "A codificação personalizada da vista web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "URI do Ícone" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "O URI do favicon para a #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Submeter" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Reiniciar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Este é um índice que permite procura. Digite palavras de procura:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Escolher Ficheiro" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Nenhum)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Abrir Link numa Nova _Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Transferir Ficheiro Ligado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Copiar Loc_alização do Link" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Abrir _Imagem em Nova Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Gra_var Imagem Como" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Cop_iar Imagem" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Abrir _Moldura em Nova Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Reler" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Nenhum Palpite Encontrado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorar Ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Aprender Ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Procurar na Web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Verificar no Dicionário" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Abrir Link" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorar _Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Ortografia e _Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Mostrar Ortografia e Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Ocultar Ortografia e Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Verificar Documento Agora" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Verificar Ortografia ao _Digitar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Verificar _Gramática com Ortografia" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Fonte" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "C_ontorno" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspeccionar _Elemento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Nenhuma pesquisa recente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Pesquisas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Limpar pesquisas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "termo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definição" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "pressionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "seleccionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "activar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "desmarcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "marcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "saltar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " ficheiros" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Desconhecido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "A Carregar..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Transmissão ao Vivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "controlador de elemento de áudio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "controlador de elemento de vídeo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "silenciar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "ligar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "reproduzir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pausa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "tempo de filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "deslocador de linha temporal thumb" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "para trás 30 segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "voltar ao tempo real" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "tempo decorrido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "tempo restante" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "ecrã completo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "avançar rápido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "retroceder rápido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "mostrar legendas fechadas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "ocultar legendas fechadas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "controlos de reprodução de elemento áudio e apresentação de estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "controlos de reprodução de elemento vídeo e apresentação de estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "silenciar faixas áudio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "ligar faixas áudio" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "iniciar reprodução" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pausar reprodução" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "scrubber de tempo de filme " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "scrubber thumb de tempo de filme " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "retroceder filme 30 segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "colocar filme em fluxo para tempo real" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "tempo actual do filme em segundos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "número de segundos de filme remanescentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "estado actual do filme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "retroceder rapidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "avançar rapidamente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Reproduzir filme em modo de ecrã completo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "começar a apresentar legendas fechadas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "parar de apresentar legendas fechadas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "tempo indefinido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "valor em falta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "tipo não coincidente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "padrão não coincidente" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "demasiado longo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "underflow de intervalo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "overflow de intervalo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "passo não coincidente" diff --git a/Source/WebKit/gtk/po/pt_BR.po b/Source/WebKit/gtk/po/pt_BR.po new file mode 100644 index 0000000..026bb2c --- /dev/null +++ b/Source/WebKit/gtk/po/pt_BR.po @@ -0,0 +1,1101 @@ +# Brazilian Portuguese translations for WebKit package. +# Copyright (C) 2009 Collabora Ltd. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2009-04-15 21:39-0300\n" +"Last-Translator: Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>\n" +"Language-Team: Brazilian Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Enviar Arquivo" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Métodos de entrada" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM Marca da _esquerda para a direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM Marca da _direita para a esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE _Embutido da esquerda para a direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE E_mbutido da direita para a esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO _Sobrepor da esquerda para a direita" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO S_obrepor da direita para a esquerda" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "_PDF Mostrar formatação direcional" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "_ZWS Espaço de largura zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _União de largura zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ _Não-união de largura zero" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Inserir caractere de controle Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Requisição de Rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "A requisição de rede para a URI que deve ser baixada" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "Requisição de Rede" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "A requisição de rede para a URI que deve ser baixada" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI de Destino" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "A URI de destino, onde deve ser salvo o arquivo" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Nome de Arquivo Sugerido" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "O nome de arquivo que deve ser usado como padrão ao salvar" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Progresso" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Determina o progresso atual do download" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Estado" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Determina o estado atual do download" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Tamanho Atual" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "A quantidade de dados já baixados" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Tamanho total" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "O tamanho total do arquivo" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Usuário cancelou o download" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Usuário e senha estão sendo pedidos pelo sítio %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Usuário:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Senha:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "Lembrar senha" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Nome" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "O nome do quadro" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Título" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "O título do documento do quadro" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "A URI atual do conteúdo que está sendo exibido pelo quadro" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Determina o progresso atual do download" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Determina o progresso atual do download" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "O título do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Título Alternativo" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "O título alternativo do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "A URI do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI Original" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "A URI original do item do histórico" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Hora da Última Visita" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Quando o item do histórico foi visitado pela última vez" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Visão Web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "A visão web que exibe o inspetor web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI Inspecionada" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "A URI que está sendo atualmente inspecionada" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Habilitar análise de desempenho de JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Analisar desempenho de JavaScript em execução." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "Habilitar análise de desempenho de JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Razão" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "A razão pela qual essa navegação ocorre" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "A URI que foi requisitada como alvo para a navegação" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Botão" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "O botão usado no clique" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Estado do modificador" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Uma máscara de bits representando o estado das teclas modificadoras" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "O nome do quadro" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "A URI que foi requisitada como alvo para a navegação" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Codificação Padrão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "A codificação padrão usada para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Família de Fontes Cursivas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "A família de fontes cursivas padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Família de Fontes Padrão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "A família de fontes padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Família de Fontes Fantasia" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "A família de fontes fantasia padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Família de Fontes Mono-espaçadas" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "A família de fontes mono-espaçadas padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Família de Fontes Sem Serifa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "A família de fontes sem serifa padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Família de Fontes Com Serifa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "A família de fontes com serifa padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Tamanho de Fonte Padrão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "O tamanho de fonte padrão para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Tamanho de fonte mono-espaçada padrão" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "O tamanho de fonte padrão para exibir texto com fonte mono-espaçada." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Tamanho Mínimo de Fonte" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "O tamanho mínimo de fontes usadas para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Tamanho de Fonte Mínimo Lógico" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "O tamanho lógico mínimo de fontes usadas para exibir texto." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Forçar 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Força uma resolução de 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Auto-carregamento de Imagens" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Carregar imagens automaticamente." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Auto-Diminuição de Imagens" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Automaticamente diminuir imagens sozinhas para caber na tela." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Imprimir Fundos" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Se as imagens de fundo devem ser impressas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Habilitar Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Habilitar linguagens de script embutidas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Habilitar Plugins" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Habilitar objetos de plugins embutidos." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Áreas de Texto Redimensionáveis" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Se as áreas de texto devem ser redimensionáveis." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI da Folha de Estilo do Usuário" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "A URI de uma folha de estilo que é aplicada a todas as páginas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Valor de Passo do Zoom" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "O valor da variação do zoom ao aproximar ou distanciar." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Habilitar Extas de Desenvolvimento" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Habilita extensões especiais que auxiliam desenvolvedores" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Habilitar Navegação Privativa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Habilita o modo de navegação privativa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "Verifiação _Ortográfica ao Digitar" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "Habilitar Navegação Privativa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "Habilitar Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "Habilitar Scripts" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "Se as imagens de fundo devem ser impressas." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "Habilitar análise de desempenho de JavaScript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Retorna o título da visão web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Retorna a URI do conteúdo atualmente exibido pela visão web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Lista de alvos de cópia" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"A lista de alvos que essa visão web suporta para cópia para área de " +"transferência" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Lista de alvos de cola" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"A lista de alvos que essa visão web suporta para cola da área de " +"transferência" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Configurações" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Uma instância de WebKitWebSettings associada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Inspetor Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "A instância de WebKitWebInspector que está associada a essa visão" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Editável" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Se o conteúdo pode ser modificado pelo usuário" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Se o conteúdo tem um fundo transparente" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Nível de Zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "O nível de zoom do conteúdo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Zoom Completo do Conteúdo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Se todo o conteúdo é redimensionado no zoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Codificação" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "A codificação padrão da visão web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Codificação Customizada" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "A codificação customizada da visão web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Enviar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Limpar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Escolher arquivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Nenhum)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Abrir Link em Nova _Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Baixar Arquivo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Copiar _Endereço do Link" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Abrir _Imagem em Nova Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Sal_var Imagem Como" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Co_piar Imagem" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Abrir _Quadro em Nova Janela" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Recarregar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Nenhuma Sugestão Encontrada" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorar Palavra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Aprender Palavra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Procurar na Web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Procurar no _Dicionário" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Abrir Link" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorar _Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Ortografia e Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "E_xibir Ortografia e Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "E_sconder Ortografia e Gramática" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Verificar Documento Agora" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Verifiação _Ortográfica ao Digitar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Verificação _Gramatical ao Digitar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Fonte" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Outline" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspecionar _Elemento" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Não há buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Limpar buscas recentes" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "termo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definição" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "pressionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "selecionar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "ativar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "desmarcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "marcar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "pular" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr "arquivos" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Desconhecido" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "Estado" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "definição" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "Índice de bu_sca" + +#~ msgid "Select _All" +#~ msgstr "Selecionar _Tudo" diff --git a/Source/WebKit/gtk/po/ru.po b/Source/WebKit/gtk/po/ru.po new file mode 100644 index 0000000..248a921 --- /dev/null +++ b/Source/WebKit/gtk/po/ru.po @@ -0,0 +1,1092 @@ +msgid "" +msgstr "" +"Project-Id-Version: webkit git\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: \n" +"Last-Translator: Anton Shestakov <engored@ya.ru>\n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Отправка файла" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Методы ввода" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM Метка с_лева направо" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM Метка с_права налево" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Вс_тавка слева направо" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Вст_авка справа налево" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO П_ерекрывание слева направо" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Пере_крывание справа налево" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Расположение по вертикали" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _Нулевой пробел" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Нулевой о_бъединитель" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Нулевой ра_зъединитель" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "Вст_авить управляющий символ Юникод" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Сетевой запрос" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Сетевой запрос для заданного URI, который должен быть выполнен" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "Сетевой запрос" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "Сетевой запрос для заданного URI, который должен быть выполнен" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI назначения" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Конечный URI для сохранения файла" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Предлагаемое имя файла" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Имя файла, которое предлагается при загрузке по умолчанию" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Прогресс" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Текущий прогресс загрузки" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Состояние" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Текущее состояния загрузки" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Текущий размер" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Объём уже загруженных данных" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Общий размер" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Общий размер файла" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Передача прервана пользователем" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Для сайта %s требуется ввод имени пользователя и пароля" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Имя пользователя:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Пароль:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "Запомнить пароль" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Имя" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Имя фрейма" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Заголовок" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Заголовок документа фрейма" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Текущий URI содержимого фрейма" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Текущий прогресс загрузки" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Текущий прогресс загрузки" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Заголовок элемента истории" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Альтернативный заголовок" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Альтернативный заголовок элемента истории" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "URI элемента истории" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Изначальный URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Изначальный URI элемента истории" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Время последнего посещения" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Время последнего посещения элемента истории" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Исследуемый URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "URI, который исследуется в данный момент" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Включить профилирование JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Профилировать выполняемый код JavaScript." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "Включить профилирование JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Причина" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Причина, по которой происходит данный переход" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI, который был указан в запросе на переход" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Кнопка" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Кнопка для нажатия" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Состояние модификаторов" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Битовая маска, представляющая состояния клавиш-модификаторов" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "Имя фрейма" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "URI, который был указан в запросе на переход" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Кодировка по умолчанию" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Кодировка текста по умолчанию." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Семейство курсивного шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Семейство курсивного шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Семейство шрифта по умолчанию" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Семейство шрифта по умолчанию для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Семейство декоративного шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Семейство декоративного шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Семейство моноширинного шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Семейство моноширинного шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Семейство шрифта без засечек" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Семейство шрифта без засечек для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Семейство шрифта с засечками" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Семейство шрифта с засечками для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Размер шрифта по умолчанию" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Размер шрифта по умолчанию для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Размер моноширинного шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Размер моноширинного шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Минимальный размер шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Минимальный размер шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Минимальный логический размер шрифта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Минимальный логический размер шрифта для отображения текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Всегда использовать 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Принудительно использовать разрешение 96 точек на дюйм" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Загружать изображения автоматически" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Загружать изображения автоматически." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Масштабировать изображения автоматически" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Автоматически уменьшать отдельные изображения по размеру экрана." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Печатать фоновые изображения" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Должны ли быть выведены на печать фоновые изображения." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Выполнять сценарии" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Выполнять встроенные сценарии на страницах." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Использовать модули" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Разрешить встроенные объекты модулей на страницах." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Изменяемый размер текстовых полей" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Текстовые поля могут изменять размер." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI пользовательской таблицы стилей" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "URI таблицы стилей, которая будет применена для всех страниц." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Приращение масштаба" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Значение, на которое будет изменяться значение масштаба." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Включить средства разработчика" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Включить особые расширения, которые могут быть полезны разработчикам" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Включить конфиденциальный режим" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Включает конфиденциальный режим просмотра" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Проверять орфографию" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Выполнять проверку орфографии при вводе текста" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Языки для проверки орфографии" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" +"Список языков через запятую, которые будут использоваться для проверки " +"орфографии" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "Выполнять сценарии" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "Выполнять сценарии" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +#, fuzzy +msgid "Enable page cache" +msgstr "Проверять орфографию" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "Должны ли быть выведены на печать фоновые изображения." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "Включить профилирование JavaScript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Настройки" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Связанный экземпляр WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Веб-инспектор" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Связанный экземпляр WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Изменяемое" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Может ли содержимое быть изменено пользователем" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Прозрачное" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Имеется ли у содержимого прозрачный фон" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Масштаб" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Масштаб содержимого страницы" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Кодировка" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Особая кодировка" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Отправить" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Сброс" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Выбрать файл" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Нет)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Открыть ссылку в новом _окне" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Загрузить связанный файл" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "_Копировать ссылку" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Открыть _изображение в новом окне" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Со_хранить изображение как..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Коп_ировать изображение" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Открыть _фрейм в новом окне" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Обновить" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Нет вариантов" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Пропустить слово" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Добавить слово" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Найти в сети" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Найти в _словаре" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "О_ткрыть ссылку" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "_Игнорировать грамматику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "_Орфография и грамматика" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Показать орфографию и грамматику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Скрыть орфографию и грамматику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Проверить _документ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Проверять _орфографию в процессе ввода" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Проверять _также грамматику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Шрифт" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Исследовать _элемент" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Нет недавних поисковых запросов" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Недавние поисковые запросы" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Удалить недавние поисковые запросы" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Неизвестно" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "Состояние" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" diff --git a/Source/WebKit/gtk/po/sl.po b/Source/WebKit/gtk/po/sl.po new file mode 100644 index 0000000..22dcd8f --- /dev/null +++ b/Source/WebKit/gtk/po/sl.po @@ -0,0 +1,1093 @@ +# Slovenian translation of webkit. +# Copyright (C) 2002-2007 Free Software Foundation, Inc. +# This file is distributed under the same license as the webkit package. +# +# Matej Urbančič <mateju@svn.gnome.org>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit HEAD\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-14 21:30+0100\n" +"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" +"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" +"X-Poedit-Country: SLOVENIA\n" +"X-Poedit-Language: Slovenian\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Naloži datoteko" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Načini vnosa" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM oznaka _Leva-proti-desni" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM oznaka _Desna-proti-levi" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE _Leva-proti-desni _vgradnja" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Desna-proti-levi v_gradnja" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Leva-proti-desni _prepis" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Desna-proti-levi p_repis" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Odprto usmerjeno oblikovanje" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS Presledek _nične dolžine" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _združevalnik nične širine" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ _razdruževalnik nične širine" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Vstavi nadzorni znak Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Omrežna zahteva" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Zahteva omrežja za naslov URI, ki naj bo prejet" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Omrežni odziv" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Odgovor omrežja za naslov URI, ki naj bo prejet" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Ciljni URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Ciljni naslov URI kamor bo shranjena datoteka" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Predlog imena datoteke" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Privzeto uporabljeno ime datoteke med shranjevanjem" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Napredek" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Zazna trenutni napredek prejemanja" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Stanje" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Zazna trenutno stanje prejemanja" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Trenutna velikost" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Količina že prejetih podatkov" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Skupna velikost" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Velikost datoteke" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Uporabnik je preklical prejemanje" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Za obisk strani %s sta zahtevana uporabniško ime in geslo." + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Sporočilo strežnika:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Uporabniško ime:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Geslo:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "Za_pomni si geslo" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Ime" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Ime okvirja" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Naslov" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Naslov dokumenta okvirja" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Obnašanje vodoravnega drsnika" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Določa trenutno obnašanje vodoravnega drsnika okvirja" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Obnašanje navpičnega drsnika" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Določa trenutno obnašanje navpičnega drsnika okvirja" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Naslov predmeta zgodovine" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Drugotni naslov" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Drugotni naslov predmeta zgodovine" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Naslov URI predmeta zgodovine" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Osnovni URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Osnovni naslov URI predmeta zgodovine" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Čas zadnjega obiska" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Čas ob katerem je bil predmet zgodovine zadnjič obiskan" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Spletni pogled" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +#, fuzzy +msgid "Inspected URI" +msgstr "Osnovni URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Omogoči profiliranje JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Profiliraj izveden JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Omogoči profiliranje časovnice" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +#, fuzzy +msgid "Profile the WebCore instrumentation." +msgstr "Ime profila vstavkov" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Vzrok" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Vzrok, zakaj se krmarjenje pojavlja" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +#, fuzzy +msgid "The URI that was requested as the target for the navigation" +msgstr "Naslov URI zahtevan za ciljno mesto" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Gumb" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Gumb uporabljen za klik" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Stanje spremenilnika" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Ciljni okvir" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "Osnovni URL ciljnega okvirja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Privzet nabor znakov" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Pisava nabor znakov za prikazovanje besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Družina pisave Cursive" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Privzeta družina pisave Cursive za prikaz besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Privzeta družina pisave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Privzeta družina pisave za prikaz besedila" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Družina pisave Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Privzeta družina pisave Fantasy za prikaz besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Družina pisave Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Privzeta družina pisave za prikaz monospace besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Družina pisave Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Privzeta družina pisave San Serif za prikaz besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Družina pisave Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Privzeta družina pisave Serif za prikaz besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Privzeta velikost pisave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Privzeta velikost pisave za prikaz besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Privzeta velikost pisave Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Privzeta velikost pisave za prikaz monospace besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Najmanjša velikost pisave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Najmanjša velikost pisave uporabljena za prikazovanje besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Najmanjša logična velikost pisave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Najmanjša logična velikost pisave za prikazovanje besedila." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Vsili 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Vsili ločljivost 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Samodejno naloži slike" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Samodejno nalaganje slik." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Samodejno skrči velikost okna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Samodejno skrči samostojne slike na širino okna." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Natisni _ozadja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Ali naj bo mogoče slike ozadja natisniti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Omogoči skripte" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Omogoči izvajanje skript skriptnih jezikov" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Omogoči vstavke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Omogoči predmete vstavkov" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Prilagodljiva besedilna območja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Ali je mogoče besedilna polja prilagajati po velikosti." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "Naslov URI uporabniške slogovne predloge" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Vrednost koraka približevanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Vrednost, ki določa raven približevanja med približevanjem ali oddaljevanjem slike." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Omogoči dodatna razvojna orodja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Omogoči zasebno brskanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Omogoči način varnega zasebnega brskanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Omogoči črkovanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Omogoči preverjanje črkovanja med tipkanjem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Izbor jezika za preverjanje črkovanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Z vejico ločen seznam jezikov za črkovanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Omogoči brskanje s kazalko" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Omogoči HTML5 podatkovno zbirko" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Ali naj se omogoči podpora HTML podatkovne zbirke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Omogoči hTML5 krajevno shranjevanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Ali naj se omogoči podpora HTML krajevnega shranjevanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Omogoči XSS Auditor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Ali naj se omogoči XSS auditor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Uporabniški agent" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Niz uporabniškega agenta, ki ga uporablja WebKitGtk" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript program lahko samodejno odpre okno" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Ali je mogoče z JavaScript programom samodejno odpreti okno" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Omogoči predpomnilnik za brskanje vsebine brez povezave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Ali naj bo omogočen predpomnilnik programa za brskanje brez povezave" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Obnašanje urejanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Način obnašanja uporabljen v načinu urejanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Ali je dovoljen splošen dostop preko naslova URI datoteke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Omogoči DOM prilepljenje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Ali naj bo omogočeno DOM prilepljenje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tipka tab kroži med predmeti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Ali tipka tab kroži med predmeti na strani." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Omogoči privzeti vsebinski meni" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "Enables the handling of right-clicks for the creation of the default context menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +#, fuzzy +msgid "Enable Site Specific Quirks" +msgstr "Poganjanje posebnega ukaza za spletišče" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Omogoči predpomnilnik strani" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Ali naj bo uporabljen predpomnilnik strani" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Samodejno prilagodi velikost okna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Samodejno prilagodi velikost vrhnjega okna, kadar to zahteva stran" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Omogoči Java aplet" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Ali je omogočena podpora za Java aplete preko oznake <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Vrne @web_pogled naslov dokumenta" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Vrne trenutni naslov URI vsebine prikazane preko @web_pogleda" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Kopiraj seznam ciljev" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +#, fuzzy +msgid "The list of targets this web view supports for clipboard copying" +msgstr "Seznam ciljev katerih medpomnilnik podpira možnost kopiraj v odložišče in DND vire." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Prilepi seznam ciljev" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +#, fuzzy +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "Seznam ciljev katerih medpomnilnik podpira možnost prilepi v odložišče in DND cilje." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Nastavitve" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Povezan primerek WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Spletni nadzornik" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Povezan primerek WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Uredljivo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Ali lahko uporabnik spremeni vsebino" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Prozorno" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Ali ima vsebina prozorno ozadje" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Raven približanja" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Raven približanja vsebine" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Polno približanje vsebine" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Ali naj bo celotna vsebina prilagojena velikosti ob približevanju" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Nabor znakov" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Privzeti nabor znakov spletnega pogleda" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Nabor znakov po meri" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Nabor znakov spletnega pogleda po meri" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Ikona URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +#, fuzzy +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Zaznamek za URI '%s' že obstaja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Pošlji" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Ponovno nastavi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Po kazalu je mogoče iskati. Vnesite ključne besede:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Izbor datoteke" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Brez)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Odpri povezavo v _novem oknu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Prejmi povezano datoteko" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Kopiraj mesto _povezave" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Odpri _sliko v novem oknu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "S_hrani sliko kot" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "_Kopiraj sliko" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Odpri okvir v _novem oknu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Ponovno naloži" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +#, fuzzy +msgid "No Guesses Found" +msgstr "Ni najdenih predmetov" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Prezri črkovanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Zapomni si črkovanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Preišči splet" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Poišči besede v slovarju" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Odpri povezavo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Prezri _slovnico" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Črkovanje in _slovnica" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Pokaži črkovanje in slovnico" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Skrij črkovanje in slovnico" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Takoj preveri dokument" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Preveri _črkovanja med tipkanjem" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Preveri _slovnico med tipkanjem" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Pisava" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Oris" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +#, fuzzy +msgid "Inspect _Element" +msgstr "Preuči _predmet" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Ni nedavnih nizov iskanja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "_Nedavno iskanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Počisti nedavno iskanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "pojem" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "določilo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "pritisni" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "izberi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "omogoči" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "odstrani izbor" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "preveri" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "skoči" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr "datoteke" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Neznano" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Nalaganje ..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Oddajanje v živo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "nadzornik zvočnega predmeta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "nadzornik slikovnega predmeta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "nemo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "povrni glasnost" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "predvajaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "premor" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "čas filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "sličica časovnega drsnika" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "nazaj 30 sekund" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "vrni se na pravi čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "pretečeni čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "preostali čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "stanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "celozaslonski način" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "hitro naprej" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "hitro nazaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "pokaži zaprte naslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "skrij zaprte naslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "prikaz stanja in nadzora predvajanja zvočnih predmetov" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "prikaz stanja in nadzora predvajanja slikovnih predmetov" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "neme zvočne sledi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "povrnjena glasnost zvočnih sledi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "začetek predvajanja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "premor predvajanja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "časovni drsnik posnetka" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "sličica časovnega drsnika posnetka" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "preskoči posnetek 30 sekund nazaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "vrni pretok predvajanja na pravi čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "trenuten čas predvajanja v sekundah" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "preostali čas filmaštevilo sekund preden se časomer ustavi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "trenutno stanje filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "hitro išči nazaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "hitro išči naprej" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Predvajanje filma v celozaslonskem načinu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "začni prikazovanje zaprtih naslovov" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "zaustavi prikazovanje zaprtih naslovov" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "nedoločen čas" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "manjka vrednost" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "vrsta ne ustreza" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "vzorec ne ustreza" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "predolgo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "pod območjem omejitve" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "prekoračitev območja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "korak ne ustreza" + +#, fuzzy +#~ msgid "_Searchable Index" +#~ msgstr "Povrni določila" + diff --git a/Source/WebKit/gtk/po/sr.po b/Source/WebKit/gtk/po/sr.po new file mode 100644 index 0000000..b132c8d --- /dev/null +++ b/Source/WebKit/gtk/po/sr.po @@ -0,0 +1,1086 @@ +# Serbian translation of webkit
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2009.
+#
+# This file is distributed under the same license as the webkit package.
+#
+# Review by Бранко Кокановић <branko.kokanovic@gmail.com> (27.6.2009.) +# Милош Поповић <gpopac@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.10\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-08-31 04:14+0200\n" +"Last-Translator: Милош Поповић <gpopac@gmail.com>\n" +"Language-Team: Serbian <gnom@prevod.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Пошаљи датотеку" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Начин _уноса" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "Ознака с _лева на десно" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "Ознака с _десна на лево" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "_Уметање с лева на десно" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "У_метање с десна на лево" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "_Препис с лева на десно" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "П_репис с десна на лево" + +# Ух, ух, ух... ~Милош :( +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "Искачуће ПДФ _дирекционо форматирање" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "_Нула са тачком" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "П_рецртана нула" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "Н_епрецртана нула" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Уметни уникод контролни знак" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Захтев на мрежи" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Захтевана адресе датотеке коју желите да преузмете" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Мрежни одговор" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Одговор на захтевану адресу датотеке коју желите да преузмете" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Циљна адреса" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Циљна адреса где желите да сачувате датотеку" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Предложено име датотеке" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Подразумевано име датотеке приликом чувања" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Преузето" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Показује тренутни напредак преузимања" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Стање" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Показује тренутно стање преузимања" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Величина" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Приказује величину преузете датотеке" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Укупна величина" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Приказује укупну величину преузете датотеке" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Прекинута преузимања" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Страница %s захтева корисничко име и лозинку" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Порука са сервера:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Корисничко име:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Лозинка:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Упамти лозинку" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Име" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Име оквира" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Наслов" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Наслов документа унутар оквира" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "Адреса" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Адреса садржаја који је приказан унутар оквира" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Хоризонтални клизач" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Одређује смер хоризонталног клизача унутар оквира." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Вертикални клизач" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Одређује смер вертикалног клизача унутар оквира." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Наслов за ставке у историјату" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Променљив наслов" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Променљив наслов ставке у историјату" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Адреса ставке у историјату" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Оригинална адреса" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Оригинална адреса ставке у историјату" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Последња посета" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Време када је ставка из историјата последњи пут посећена" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Веб приказ" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Веб приказ кога исцртава „Веб инспектор“" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Инспекција адресе" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "Адреса коју тренутно обрађује инспектор" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Омогући учење Јава скрипте" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Прави профил покренуте Јава скрипте." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Омогући временски профил" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Прави профил WebCore алаки." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Разлог" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Разлог због кога је приказана навигација" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "Циљна адреса коју захтева навигација" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Дугме" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Дугме које се притиска" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Стање измењивача" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Ознака која одређује да ли је укључен тастер за измену функције" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Циљни оквир" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Циљни оквир за навигацију" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Подразумевано кодирање" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Подразумевано кодирање за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Скуп искошених фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Подразумевани скуп искошених фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Подразумевани скуп фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Подразумевани скуп фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Скуп фантази фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Подразумевани скуп фантази фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Скуп равномерних фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Подразумевани скуп равномерно широких фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Скуп безсерифних фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Подразумевани скуп безсерифних фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Скуп серифних фонтова" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Подразумевани скуп серифних фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Подразумевана величина фонта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Подразумевана величина фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Подразумевана величина разномерног фонта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Подразумевана величина равномерно широких фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Најмања величина фонта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Најмања величина фонта за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Најмања логичка величина фонта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Најмања логичка величина фонтова за приказ текста." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Приморај 96 ТПИ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Приморава резолуцију од 96 ТПИ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Сам учитај слике" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Аутоматски учитава слике." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Сам смањи слике" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Аутоматску умањује слике тако да се уклопиле у страну." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Исцртај позадину" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Одређује да ли да се приказују позадинске слике." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Омогући скрипте" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Укључује језике за скрипте уметнуте унутар страница." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Омогући додатке" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Укључује објекте уметнуте унутар страница." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Текст променљиве величине" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Одређује да ли да област са текстом буде променљиве величине." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "Адреса датотеке са стилом" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" +"Путања до датотеке са сопственим стилом који се примењује на сваку страницу." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Корак увећања" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Вредност за коју се мења приказ приликом повећања или смањења." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Укључи додатке за развој" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Укључује додатке који помажу приликом развоја овог програма" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Приватни режим" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Укључује режим разгледања уз чување ваше приватности" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Омогући проверу писања" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Укључује проверу писања док куцате" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Језик за проверу писања" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Списак језика раздвојених тачком који се користе за проверу писања" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Преглед са показивачем" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Одређује да ли да се користи приступачнија тастатура за навигацију" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Укључи ХТМЛ5 базу података" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Одређује да ли је подржана ХТМЛ5 база података" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Укључи ХТМЛ5 складиште" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Одређује да ли је подржано локално ХТМЛ5 складиште" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Омогући ИксСС ревизију" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Одређује да ли је укључена ИксСС ревизија" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Представљање прегледника" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Ниска за представљање WebKitGtk прегледника (кориснички агент)" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "Дозволи Јава скриптама да отворе прозор" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Одређује да ли Јава скрипте могу да отворе нове прозоре" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Омогући оставу за рад ван мређе" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Одређује да ли се користи остава за рад програма ван мреже" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Понашање уређивача" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Понашање када се користи режим за уређивање" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Универзални приступ из адреса датотеке" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Одређује да ли је укључен универзални приступ из адреса датотеке" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Укључи ДОМ убацивање" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Одређује да ли је омогућено ДОМ убацивање" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tab тастер листа делове странице" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Одређује да ли да Tab тастер листа елементе странице." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Подразумевани приручни мени" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "Приказује подразумевани приручни мени при клику десног тастера миша" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Прихвати распоред са странице" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Омогућава разне досетке сајтова за приказ странице" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Укључи оставу за странице" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Одређује да ли да се чувају странице у оставу" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Сам промени величину прозора" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Сам повећава величину основног прозора када странице то захтевају" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Омогући Јава програмчиће" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Да ли да укључим подршку за Јава програмчиће кроз <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Исписује наслов документа из @веб_прегледа" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Исписује тренутну адресу садржаја приказаног у @веб_прегледу" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Умножи списак циљева" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "Циљева за копирање међу списак исечака које подржава веб преглед" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Убаци списак циљева" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "Списак циљева за убацивање из оставе које подржава веб преглед" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Подешавања" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Повезано са WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Веб инспектор" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Повезано са WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Измењиво" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Омогућава кориснику да уређује приказани садржај" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Провидност" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Омогућава провидну позадину за садржај" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Увећање" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Ниво увећања приказаног садржаја" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Увећавај све" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Одређује да ли да се увећава целокупан садржај" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Кодирање" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Подразумевано кодирање веб странице" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Произвољно кодирање" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Произвољно кодирање веб странице" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Адреса иконице" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Адреса иконице за #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Пошаљи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Поништи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Можете претражити индекс. Унесите речи за претрагу:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Изаберите датотеку" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(ништа)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Отвори везу у _новом прозору" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Преузми циљну датотеку" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Умножи _адресу везе" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "_Отвори слику у новом прозору" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "_Сачувај слику као" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "_Умножи слику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "О_твори оквир у новом прозору" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Освежи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Нема поклапања" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Занемари ову реч" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Упамти ову реч" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Потражи на мрежи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Потражи у директоријуму" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Отвори везу" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Занемари _правопис" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Провера пи_сања и правописа" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Прикажи проверу писања и правописа" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "С_акриј проверу писања и правописа" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Про_вери документ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Провери писање _док куцам" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "П_ровери правопис и писање" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Фонт" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Оквир" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Инспекција _елемента" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Нема скорашњих претрага" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Скорашње претраге" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Очисти скорашње претраге" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "термин" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "дефиниција" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "притисни" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "изабери" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "покрени" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "искључи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "укључи" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "иди" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " датотеке" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Непознато" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Учитавам..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Пренос уживо" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "контрола звучног елемента" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "контрола видео елемента" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "утишај" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "појачај" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "пусти" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "паузирај" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "трајање филма" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "линија са временом" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "назад за 30 s" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "врати у реално време" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "прегледано" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "преостало" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "стање" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "цео екран" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "премотај унапред" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "премотај уназад" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "прикажи затворене наslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "сакриј затворене наslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "стање и контрола пуштања звучних елемената" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "стање и контрола пуштања видео елемената" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "утишај звук" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "појачај звук" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "пусти" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "паузирај" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "исписано време филма" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "клик за исписано време филма" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "премотај филм уназад за 30 s" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "настави приказ филма у реалном времену" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "протекло трајање филма у секундама" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "преостало трајање филма у секундама" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "стање филма" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "брзо премотај уназад" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "брзо премотај унапред" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Пушта филм преко целог екрана" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "приказуј затворене опције" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "не приказуј затворене опције" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "бесконачно трајање" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "недостаје вредност" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "не поклапа се врста" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "не поклапа се шаблон" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "предугачко" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "опсег подкорачен" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "опсег прекорачен" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "не поклапа се корак" + +#~ msgid "_Searchable Index" +#~ msgstr "_Претражив индекс" diff --git a/Source/WebKit/gtk/po/sr@latin.po b/Source/WebKit/gtk/po/sr@latin.po new file mode 100644 index 0000000..7fb251d --- /dev/null +++ b/Source/WebKit/gtk/po/sr@latin.po @@ -0,0 +1,1086 @@ +# Serbian translation of webkit
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2009.
+#
+# This file is distributed under the same license as the webkit package.
+#
+# Review by Branko Kokanović <branko.kokanovic@gmail.com> (27.6.2009.) +# Miloš Popović <gpopac@gmail.com>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.10\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-08-31 04:14+0200\n" +"Last-Translator: Miloš Popović <gpopac@gmail.com>\n" +"Language-Team: Serbian <gnom@prevod.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Pošalji datoteku" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Način _unosa" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "Oznaka s _leva na desno" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "Oznaka s _desna na levo" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "_Umetanje s leva na desno" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "U_metanje s desna na levo" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "_Prepis s leva na desno" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "P_repis s desna na levo" + +# Uh, uh, uh... ~Miloš :( +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "Iskačuće PDF _direkciono formatiranje" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "_Nula sa tačkom" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "P_recrtana nula" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "N_eprecrtana nula" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Umetni unikod kontrolni znak" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Zahtev na mreži" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Zahtevana adrese datoteke koju želite da preuzmete" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Mrežni odgovor" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Odgovor na zahtevanu adresu datoteke koju želite da preuzmete" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Ciljna adresa" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Ciljna adresa gde želite da sačuvate datoteku" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Predloženo ime datoteke" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Podrazumevano ime datoteke prilikom čuvanja" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Preuzeto" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Pokazuje trenutni napredak preuzimanja" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Stanje" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Pokazuje trenutno stanje preuzimanja" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Veličina" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Prikazuje veličinu preuzete datoteke" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Ukupna veličina" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Prikazuje ukupnu veličinu preuzete datoteke" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Prekinuta preuzimanja" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Stranica %s zahteva korisničko ime i lozinku" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Poruka sa servera:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Korisničko ime:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Lozinka:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Upamti lozinku" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Ime" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Ime okvira" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Naslov" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Naslov dokumenta unutar okvira" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "Adresa" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Adresa sadržaja koji je prikazan unutar okvira" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Horizontalni klizač" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Određuje smer horizontalnog klizača unutar okvira." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Vertikalni klizač" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Određuje smer vertikalnog klizača unutar okvira." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Naslov za stavke u istorijatu" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Promenljiv naslov" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Promenljiv naslov stavke u istorijatu" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Adresa stavke u istorijatu" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Originalna adresa" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Originalna adresa stavke u istorijatu" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Poslednja poseta" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Vreme kada je stavka iz istorijata poslednji put posećena" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Veb prikaz" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Veb prikaz koga iscrtava „Veb inspektor“" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Inspekcija adrese" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "Adresa koju trenutno obrađuje inspektor" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Omogući učenje Java skripte" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Pravi profil pokrenute Java skripte." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Omogući vremenski profil" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Pravi profil WebCore alaki." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Razlog" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Razlog zbog koga je prikazana navigacija" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "Ciljna adresa koju zahteva navigacija" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Dugme" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Dugme koje se pritiska" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Stanje izmenjivača" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Oznaka koja određuje da li je uključen taster za izmenu funkcije" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Ciljni okvir" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Ciljni okvir za navigaciju" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Podrazumevano kodiranje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Podrazumevano kodiranje za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Skup iskošenih fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Podrazumevani skup iskošenih fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Podrazumevani skup fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Podrazumevani skup fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Skup fantazi fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Podrazumevani skup fantazi fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Skup ravnomernih fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Podrazumevani skup ravnomerno širokih fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Skup bezserifnih fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Podrazumevani skup bezserifnih fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Skup serifnih fontova" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Podrazumevani skup serifnih fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Podrazumevana veličina fonta" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Podrazumevana veličina fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Podrazumevana veličina raznomernog fonta" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Podrazumevana veličina ravnomerno širokih fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Najmanja veličina fonta" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Najmanja veličina fonta za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Najmanja logička veličina fonta" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Najmanja logička veličina fontova za prikaz teksta." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Primoraj 96 TPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Primorava rezoluciju od 96 TPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Sam učitaj slike" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Automatski učitava slike." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Sam smanji slike" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Automatsku umanjuje slike tako da se uklopile u stranu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Iscrtaj pozadinu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Određuje da li da se prikazuju pozadinske slike." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Omogući skripte" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Uključuje jezike za skripte umetnute unutar stranica." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Omogući dodatke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Uključuje objekte umetnute unutar stranica." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Tekst promenljive veličine" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Određuje da li da oblast sa tekstom bude promenljive veličine." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "Adresa datoteke sa stilom" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "" +"Putanja do datoteke sa sopstvenim stilom koji se primenjuje na svaku stranicu." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Korak uvećanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Vrednost za koju se menja prikaz prilikom povećanja ili smanjenja." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Uključi dodatke za razvoj" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Uključuje dodatke koji pomažu prilikom razvoja ovog programa" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Privatni režim" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Uključuje režim razgledanja uz čuvanje vaše privatnosti" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Omogući proveru pisanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Uključuje proveru pisanja dok kucate" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Jezik za proveru pisanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Spisak jezika razdvojenih tačkom koji se koriste za proveru pisanja" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Pregled sa pokazivačem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Određuje da li da se koristi pristupačnija tastatura za navigaciju" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Uključi HTML5 bazu podataka" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Određuje da li je podržana HTML5 baza podataka" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Uključi HTML5 skladište" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Određuje da li je podržano lokalno HTML5 skladište" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Omogući IksSS reviziju" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Određuje da li je uključena IksSS revizija" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Predstavljanje preglednika" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Niska za predstavljanje WebKitGtk preglednika (korisnički agent)" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "Dozvoli Java skriptama da otvore prozor" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "Određuje da li Java skripte mogu da otvore nove prozore" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Omogući ostavu za rad van mređe" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Određuje da li se koristi ostava za rad programa van mreže" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Ponašanje uređivača" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Ponašanje kada se koristi režim za uređivanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Univerzalni pristup iz adresa datoteke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Određuje da li je uključen univerzalni pristup iz adresa datoteke" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Uključi DOM ubacivanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Određuje da li je omogućeno DOM ubacivanje" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Tab taster lista delove stranice" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Određuje da li da Tab taster lista elemente stranice." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Podrazumevani priručni meni" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "Prikazuje podrazumevani priručni meni pri kliku desnog tastera miša" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Prihvati raspored sa stranice" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Omogućava razne dosetke sajtova za prikaz stranice" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Uključi ostavu za stranice" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Određuje da li da se čuvaju stranice u ostavu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Sam promeni veličinu prozora" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Sam povećava veličinu osnovnog prozora kada stranice to zahtevaju" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Omogući Java programčiće" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Da li da uključim podršku za Java programčiće kroz <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Ispisuje naslov dokumenta iz @veb_pregleda" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Ispisuje trenutnu adresu sadržaja prikazanog u @veb_pregledu" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Umnoži spisak ciljeva" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "Ciljeva za kopiranje među spisak isečaka koje podržava veb pregled" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Ubaci spisak ciljeva" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "Spisak ciljeva za ubacivanje iz ostave koje podržava veb pregled" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Podešavanja" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Povezano sa WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Veb inspektor" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Povezano sa WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Izmenjivo" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Omogućava korisniku da uređuje prikazani sadržaj" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Providnost" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Omogućava providnu pozadinu za sadržaj" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Uvećanje" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Nivo uvećanja prikazanog sadržaja" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Uvećavaj sve" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Određuje da li da se uvećava celokupan sadržaj" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Kodiranje" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Podrazumevano kodiranje veb stranice" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Proizvoljno kodiranje" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Proizvoljno kodiranje veb stranice" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "Adresa ikonice" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "Adresa ikonice za #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Pošalji" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Poništi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Možete pretražiti indeks. Unesite reči za pretragu:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Izaberite datoteku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(ništa)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Otvori vezu u _novom prozoru" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Preuzmi ciljnu datoteku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Umnoži _adresu veze" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "_Otvori sliku u novom prozoru" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "_Sačuvaj sliku kao" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "_Umnoži sliku" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "O_tvori okvir u novom prozoru" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Osveži" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Nema poklapanja" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Zanemari ovu reč" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Upamti ovu reč" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Potraži na mreži" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Potraži u direktorijumu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Otvori vezu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Zanemari _pravopis" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Provera pi_sanja i pravopisa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Prikaži proveru pisanja i pravopisa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "S_akrij proveru pisanja i pravopisa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Pro_veri dokument" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Proveri pisanje _dok kucam" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "P_roveri pravopis i pisanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Font" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Okvir" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspekcija _elementa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Nema skorašnjih pretraga" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Skorašnje pretrage" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Očisti skorašnje pretrage" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "termin" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definicija" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "pritisni" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "izaberi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "pokreni" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "isključi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "uključi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "idi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " datoteke" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Nepoznato" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Učitavam..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Prenos uživo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "kontrola zvučnog elementa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "kontrola video elementa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "utišaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "pojačaj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "pusti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "pauziraj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "trajanje filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "linija sa vremenom" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "nazad za 30 s" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "vrati u realno vreme" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "pregledano" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "preostalo" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "stanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "ceo ekran" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "premotaj unapred" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "premotaj unazad" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "prikaži zatvorene naslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "sakrij zatvorene naslove" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "stanje i kontrola puštanja zvučnih elemenata" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "stanje i kontrola puštanja video elemenata" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "utišaj zvuk" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "pojačaj zvuk" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "pusti" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "pauziraj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "ispisano vreme filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "klik za ispisano vreme filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "premotaj film unazad za 30 s" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "nastavi prikaz filma u realnom vremenu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "proteklo trajanje filma u sekundama" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "preostalo trajanje filma u sekundama" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "stanje filma" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "brzo premotaj unazad" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "brzo premotaj unapred" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Pušta film preko celog ekrana" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "prikazuj zatvorene opcije" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "ne prikazuj zatvorene opcije" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "beskonačno trajanje" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "nedostaje vrednost" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "ne poklapa se vrsta" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "ne poklapa se šablon" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "predugačko" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "opseg podkoračen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "opseg prekoračen" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "ne poklapa se korak" + +#~ msgid "_Searchable Index" +#~ msgstr "_Pretraživ indeks" diff --git a/Source/WebKit/gtk/po/sv.po b/Source/WebKit/gtk/po/sv.po new file mode 100644 index 0000000..d8f7e34 --- /dev/null +++ b/Source/WebKit/gtk/po/sv.po @@ -0,0 +1,1101 @@ +# Swedish translation for webkitgtk+. +# This file is put in the public domain. +# Daniel Nylander <po@danielnylander.se>, 2009, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: webkitgtk+\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-02-21 10:35+0100\n" +"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" +"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Skicka upp fil" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Inmatnings_metoder" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM _Left-to-right mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM _Right-to-left mark" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE Left-to-right _embedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Right-to-left e_mbedding" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Left-to-right _override" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Right-to-left o_verride" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Pop directional formatting" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS _Zero width space" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ Zero width _joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ Zero width _non-joiner" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Infoga Unicode-styrtecken" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Nätverksbegäran" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Nätverksbegäran för URI:n som ska hämtas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "Nätverksbegäran" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "Nätverksbegäran för URI:n som ska hämtas" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "Destinations-URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "Destinations-URI där sparning ska ske av filen" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Föreslaget filnamn" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Föreslaget filnamn som standard vid sparning" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Förlopp" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Fastställer aktuellt förlopp för hämtningen" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Status" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Fastställer aktuell status för hämtningen" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Aktuell storlek" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Längden för det data som redan hämtats" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Total storlek" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Totala storleken för filen" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Användaren avbröt hämtningen" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Ett användarnamn och lösenord begärs av platsen %s" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Användarnamn:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Lösenord:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "Kom ihåg lösenordet" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Namn" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Namnet på ramen" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Titel" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Dokumenttiteln för ramen" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "Aktuella URI:n för innehållet som visas av ramen" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Fastställer aktuellt förlopp för hämtningen" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Fastställer aktuellt förlopp för hämtningen" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Titeln för historikobjektet" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Alternativ titel" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Alternativ titel för historikobjektet" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "URI:n för historikobjektet" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Ursprunglig URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Ursprungliga URI:n för historikobjektet" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Senast besökt" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Tiden för vilket historikobjektet senast besöktes" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Webbvy" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Webbvyn som renderar själva Webbinspektören" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Inspekterad URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "URI:n som för närvarande inspekteras" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Aktivera JavaScript-profilering" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Profilera det körda JavaScript." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "Aktivera JavaScript-profilering" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Anledning" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Anledningen varför denna navigering sker" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI:n som begärdes som mål för navigeringen" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Knapp" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Knappen som användes för att klicka" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Modifierartillstånd" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "En bitmask som representerar tillståndet för modifierartangenterna" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "Namnet på ramen" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "URI:n som begärdes som mål för navigeringen" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Standardteckenkodning" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Standardkodningen som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Typsnittsfamiljen Cursive" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Standardfamiljen för Cursive-typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Standardfamilj för typsnitt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Standardfamiljen för typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Typsnittsfamiljen Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Standardfamiljen för Fantasy-typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Typsnittsfamiljen Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "" +"Standardfamiljen för typsnitt som används för att visa text med fast " +"breddsteg." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Typsnittsfamiljen Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "" +"Standardfamiljen för Sans Serif-typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Typsnittsfamiljen Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Standardfamiljen för Serif-typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Standardstorlek för typsnitt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Standardstorleken för typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Standardstorlek för Monospace-typsnitt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "" +"Standardstorleken för typsnitt som används för att visa text med fast " +"breddsteg." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Minimumstorlek för typsnitt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Minimumstorlek för typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Logisk minimumstorlek för typsnitt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Logisk minimumstorlek för typsnitt som används för att visa text." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Tvinga 96 punkter/tum" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Tvinga en upplösning på 96 punkter/tum" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Läs automatiskt in bilder" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Läs in bilder automatiskt." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Minska bilder automatiskt" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Minska automatiskt fristående bilder till att passa." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "Skriv ut bakgrunder" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Huruvida bakgrundsbilder ska skrivas ut." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Aktivera skript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Aktivera inbäddade skriptspråk." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Aktivera insticksmoduler" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Aktivera inbäddade insticksobjekt." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Storleksändringsbara textområden " + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Huruvida textområden kan storleksändras." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI för användarstilmall" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "URI:n för en stilmall som tillämpas på varje sida." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Stegvärde för zoom" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Värdet med vilket zoomnivå ändras vid in- eller utzoomning." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Aktivera extrafunktioner för utvecklare" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Aktiverar speciella tillägg som hjälper utvecklarna" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Aktivera privat surfning" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Aktiverar läget för privat surfning" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "Kontrollera stavning vid _inmatning" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "Aktivera privat surfning" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "Aktivera skript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "Aktivera skript" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "Huruvida bakgrundsbilder ska skrivas ut." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "Aktivera JavaScript-profilering" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Returnerar dokumenttiteln för @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Returnerar den aktuella URI:a för innehållet som visas av @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Kopiera mållista" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Listan över mål som denna webbvy har stöd för vid kopiering till urklipp" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Klistra in mållista" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Listan över mål som denna webbvy har stöd för vid inklistring från urklipp" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Inställningar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "En associerad WebKitWebSettings-instans" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Webbinspektör" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Den associerade WebKitWebInspector-instansen" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Redigeringsbar" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Huruvida innehållet kan ändras av användaren" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Genomskinlig" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Huruvida innehållet har en genomskinlig bakgrund" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Zoomnivån för innehållet" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Fullständig innehållszoom" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Huruvida hela innehållet skalas vid zoomning" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Teckenkodning" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Standardkodning för webbvyn" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Anpassad teckenkodning" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Anpassad kodning för webbvyn" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Skicka" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Återställ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Välj fil" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Ingen)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Öppna länk i nytt _fönster" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Hämta länkad fil" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Kopiera länkens ad_ress" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Öppna _bild i nytt fönster" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Spa_ra bild som" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Kop_iera bild" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Öppna _ram i nytt fönster" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "_Uppdatera" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Inga gissningar hittades" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Ignorera stavfel" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Lär stavning" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Sök på webben" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Sl_å upp i ordbok" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Öppna länk" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Ignorera _grammatikfel" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Stavning och _grammatik" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Visa stavning och grammatik" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "_Dölj stavning och grammatik" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Kontrollera dokumentet nu" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Kontrollera stavning vid _inmatning" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Kontrollera _grammatik med stavning" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Typsnitt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Kontur" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Inspektera _element" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Inga tidigare sökningar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Tidigare sökningar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Töm tidigare sökningar" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "term" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "definition" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "tryck" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "välj" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "aktivera" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "avmarkera" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "markera" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "hoppa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " filer" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Okänt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "Status" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "definition" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "_Sökbart index" diff --git a/Source/WebKit/gtk/po/uk.po b/Source/WebKit/gtk/po/uk.po new file mode 100644 index 0000000..46f12be --- /dev/null +++ b/Source/WebKit/gtk/po/uk.po @@ -0,0 +1,1108 @@ +# This file is put in the public domain. +# +# Yuri Chornoivan <yurchor@ukr.net>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.22\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-03-24 20:05-0300\n" +"PO-Revision-Date: 2010-03-19 19:27+0200\n" +"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" +"Language-Team: Ukrainian <translation@linux.org.ua>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:531 +msgid "Upload File" +msgstr "Вивантажити файл" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "_Способи введення" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM позначка з_ліва направо" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM позначка с_права наліво" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE вс_тавка зліва направо" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE вст_авка справа ліворуч" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO п_ерезапис зліва праворуч" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO пе_резапис справа ліворуч" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF _Вертикальне розташування" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS Про_біл нульової ширини" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _Об’єднувач нульової ширини" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ _Роз’єднувач нульової ширини" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "В_ставити керівний символ Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:270 +msgid "Network Request" +msgstr "Запит до мережі" + +#: WebKit/gtk/webkit/webkitdownload.cpp:271 +msgid "The network request for the URI that should be downloaded" +msgstr "Запит до мережі щодо адреси URI, вміст за якою слід звантажити" + +#: WebKit/gtk/webkit/webkitdownload.cpp:285 +msgid "Network Response" +msgstr "Відповідь мережі" + +#: WebKit/gtk/webkit/webkitdownload.cpp:286 +msgid "The network response for the URI that should be downloaded" +msgstr "Відповідь мережі щодо адреси URI, вміст за якою слід звантажити" + +#: WebKit/gtk/webkit/webkitdownload.cpp:300 +msgid "Destination URI" +msgstr "Адреса URI призначення" + +#: WebKit/gtk/webkit/webkitdownload.cpp:301 +msgid "The destination URI where to save the file" +msgstr "Адреса URI призначення, за якою слід зберегти файл" + +#: WebKit/gtk/webkit/webkitdownload.cpp:315 +msgid "Suggested Filename" +msgstr "Пропозиція щодо назви" + +#: WebKit/gtk/webkit/webkitdownload.cpp:316 +msgid "The filename suggested as default when saving" +msgstr "Типова назва, яку програма пропонуватиме під час збереження" + +#: WebKit/gtk/webkit/webkitdownload.cpp:333 +msgid "Progress" +msgstr "Поступ" + +#: WebKit/gtk/webkit/webkitdownload.cpp:334 +msgid "Determines the current progress of the download" +msgstr "Визначає поточний поступ звантаження" + +#: WebKit/gtk/webkit/webkitdownload.cpp:347 +msgid "Status" +msgstr "Стан" + +#: WebKit/gtk/webkit/webkitdownload.cpp:348 +msgid "Determines the current status of the download" +msgstr "Визначає поточний стан звантаження" + +#: WebKit/gtk/webkit/webkitdownload.cpp:363 +msgid "Current Size" +msgstr "Поточний розмір" + +#: WebKit/gtk/webkit/webkitdownload.cpp:364 +msgid "The length of the data already downloaded" +msgstr "Об’єм вже звантажених даних" + +#: WebKit/gtk/webkit/webkitdownload.cpp:378 +msgid "Total Size" +msgstr "Загальний розмір" + +#: WebKit/gtk/webkit/webkitdownload.cpp:379 +msgid "The total size of the file" +msgstr "Загальний об’єм даних файла" + +#: WebKit/gtk/webkit/webkitdownload.cpp:530 +msgid "User cancelled the download" +msgstr "Звантаження скасовано користувачем" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Надійшов запит від сайта %s щодо імені користувача і пароля" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Повідомлення сервера:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Користувач:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Пароль:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Запам’ятати пароль" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "Name" +msgstr "Назва" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:300 +msgid "The name of the frame" +msgstr "Назва фрейма" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2443 +msgid "Title" +msgstr "Заголовок" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:307 +msgid "The document title of the frame" +msgstr "Заголовок документа фрейма" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2457 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:314 +msgid "The current URI of the contents displayed by the frame" +msgstr "Поточна адреса URI даних, показаних у фреймі" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "Horizontal Scrollbar Policy" +msgstr "Правила горизонтальної смужки гортання" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:346 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "" +"Визначає поточні правила створення горизонтальної смужки гортання у фреймі." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Vertical Scrollbar Policy" +msgstr "Правила вертикальної смужки гортання" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:364 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "" +"Визначає поточні правила створення вертикальної смужки гортання у фреймі." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Заголовок запису журналу" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Альтернативний заголовок" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Альтернативний заголовок запису журналу" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "Адреса URI запису журналу" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "Початкова адреса URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "Початкова адреса URI запису журналу" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Час останнього відвідування" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Час, коли ви востаннє відвідували запис журналу" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Веб-панель" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Веб-панель, на якій показано дані веб-інспектора" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "Адреса URI, що перевіряється" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "Адреса URI, яку перевіряють" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Увімкнути профілювання JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Створити профіль виконаного JavaScript." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Увімкнути профілювання Timeline" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "Профілювати інструментарій WebCore." + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Підстава" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Підстава цього переходу" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "Адреса URI, на яку надійшов запит, як на адресу переходу" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Кнопка" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Кнопка для натискання" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Стан модифікаторів" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Бітова маска, що відповідає стану натискання клавіш-модифікаторів" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Фрейм призначення" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Фрейм призначення під час переходу" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:239 +msgid "Default Encoding" +msgstr "Типове кодування" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:240 +msgid "The default encoding used to display text." +msgstr "Типове кодування для показу тексту." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:248 +msgid "Cursive Font Family" +msgstr "Гарнітура курсивного шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:249 +msgid "The default Cursive font family used to display text." +msgstr "Типова гарнітура курсивного шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:257 +msgid "Default Font Family" +msgstr "Типова гарнітура шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:258 +msgid "The default font family used to display text." +msgstr "Типова гарнітура шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:266 +msgid "Fantasy Font Family" +msgstr "Гарнітура декоративного шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:267 +msgid "The default Fantasy font family used to display text." +msgstr "Типова гарнітура декоративного шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:275 +msgid "Monospace Font Family" +msgstr "Гарнітура моноширинного шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:276 +msgid "The default font family used to display monospace text." +msgstr "Типова гарнітура шрифту для показу моноширинних текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:284 +msgid "Sans Serif Font Family" +msgstr "Гарнітура шрифту без засічок" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:285 +msgid "The default Sans Serif font family used to display text." +msgstr "Типова гарнітура без засічок шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:293 +msgid "Serif Font Family" +msgstr "Гарнітура шрифту з засічками" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:294 +msgid "The default Serif font family used to display text." +msgstr "Типова гарнітура шрифту з засічками для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:302 +msgid "Default Font Size" +msgstr "Типовий розмір шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:303 +msgid "The default font size used to display text." +msgstr "Типовий розмір символів шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:311 +msgid "Default Monospace Font Size" +msgstr "Типовий розмір моноширинного шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:312 +msgid "The default font size used to display monospace text." +msgstr "" +"Типовий розмір символів шрифту для показу моноширинних текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:320 +msgid "Minimum Font Size" +msgstr "Мінімальний розмір шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:321 +msgid "The minimum font size used to display text." +msgstr "Мінімальний розмір символів шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:329 +msgid "Minimum Logical Font Size" +msgstr "Мінімальний розмір логічного шрифту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:330 +msgid "The minimum logical font size used to display text." +msgstr "" +"Мінімальний розмір символів логічного шрифту для показу текстових даних." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:349 +msgid "Enforce 96 DPI" +msgstr "Використовувати 96 т/д" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:350 +msgid "Enforce a resolution of 96 DPI" +msgstr "Використовувати роздільну здатність 96 т/д" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:358 +msgid "Auto Load Images" +msgstr "Автоматично завантажувати зображення" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:359 +msgid "Load images automatically." +msgstr "Завантажувати зображення у автоматичному режимі" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:367 +msgid "Auto Shrink Images" +msgstr "Автоматично стискати зображення" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:368 +msgid "Automatically shrink standalone images to fit." +msgstr "Автоматично стискати окремі зображення відповідно до розмірів вікна." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:376 +msgid "Print Backgrounds" +msgstr "Друкувати тло" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:377 +msgid "Whether background images should be printed." +msgstr "Чи слід друкувати зображення тла сторінки." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:385 +msgid "Enable Scripts" +msgstr "Увімкнути скрипти" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:386 +msgid "Enable embedded scripting languages." +msgstr "Увімкнути вбудовані до сторінок скрипти." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:394 +msgid "Enable Plugins" +msgstr "Увімкнути додатки" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:395 +msgid "Enable embedded plugin objects." +msgstr "Увімкнути вбудовані об’єкти додатків." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:403 +msgid "Resizable Text Areas" +msgstr "Змінний розмір текстових полів" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:404 +msgid "Whether text areas are resizable." +msgstr "Чи можлива зміна розмірів текстових полів." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:411 +msgid "User Stylesheet URI" +msgstr "Адреса URI таблиці стилів користувача" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:412 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "Адреса URI таблиці стилів, яку буде застосовано до всіх сторінок." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:427 +msgid "Zoom Stepping Value" +msgstr "Приріст масштабу" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:428 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "" +"Значення приросту, на який змінюватиметься масштаб під час збільшення або " +"зменшення." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:446 +msgid "Enable Developer Extras" +msgstr "Увімкнути засоби розробки" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:447 +msgid "Enables special extensions that help developers" +msgstr "Увімкнути особливі додатки, які допоможуть у розробці" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:467 +msgid "Enable Private Browsing" +msgstr "Увімкнути конфіденційний перегляд" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:468 +msgid "Enables private browsing mode" +msgstr "Увімкнути режим конфіденційного перегляду" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:483 +msgid "Enable Spell Checking" +msgstr "Увімкнути перевірку орфографії" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:484 +msgid "Enables spell checking while typing" +msgstr "Увімкнути перевірку правопису під час введення тексту" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:507 +msgid "Languages to use for spell checking" +msgstr "Мови для перевірки правопису" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:508 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Список записів мов для перевірки правопису, відокремлених комами" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:522 +msgid "Enable Caret Browsing" +msgstr "Увімкнути режим активного вказівника" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:523 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" +"Вмикає або вимикає додаткові можливості керування вказівником за допомогою " +"клавіатури" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:538 +msgid "Enable HTML5 Database" +msgstr "Увімкнути базу даних HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:539 +msgid "Whether to enable HTML5 database support" +msgstr "Чи слід вмикати підтримку бази даних HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:554 +msgid "Enable HTML5 Local Storage" +msgstr "Увімкнути локальне сховище HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:555 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Чи слід вмикати підтримку локального сховища HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:569 +msgid "Enable XSS Auditor" +msgstr "Увімкнути інструмент перевірки XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:570 +msgid "Whether to enable teh XSS auditor" +msgstr "Чи слід вмикати інструмент перевірки XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:588 +msgid "Enable Spatial Navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:589 +#, fuzzy +msgid "Whether to enable Spatial Navigation" +msgstr "Чи слід вмикати інструмент перевірки XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:606 +msgid "User Agent" +msgstr "Агент користувача" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:607 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Рядок User-Agent, який буде використано WebKitGtk" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:622 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript може відкривати вікна у автоматичному режимі" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:623 +msgid "Whether JavaScript can open windows automatically" +msgstr "Чи можуть скрипти JavaScript відкривати вікна у автоматичному режимі" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:638 +msgid "Enable offline web application cache" +msgstr "Увімкнути автономний кеш веб-програм" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:639 +msgid "Whether to enable offline web application cache" +msgstr "" +"Чи слід вмикати кеш веб-програм, призначений для автономної роботи без мережі" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:666 +msgid "Editing behavior" +msgstr "Поведінка під час редагування" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:667 +msgid "The behavior mode to use in editing mode" +msgstr "Режим поведінки під час редагування" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:683 +msgid "Enable universal access from file URIs" +msgstr "Увімкнути універсальний доступ з файлових адрес URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:684 +msgid "Whether to allow universal access from file URIs" +msgstr "Чи слід дозволяти універсальний доступ з файлових адрес URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Enable DOM paste" +msgstr "Увімкнути вставку DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:700 +msgid "Whether to enable DOM paste" +msgstr "Чи слід вмикати вставку DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:718 +msgid "Tab key cycles through elements" +msgstr "Циклічний перехід елементами за клавішею Tab" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" +"Чи виконуватиметься циклічний перехід елементами сторінки у відповідь на " +"натискання клавіші Tab." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:739 +msgid "Enable Default Context Menu" +msgstr "Увімкнути типове контекстне меню" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" +"Вмикає обробку клацання правою кнопкою миші для створення типового " +"контекстного меню" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:760 +msgid "Enable Site Specific Quirks" +msgstr "Увімкнути підтримку особливостей сайта" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:761 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Увімкнути специфічну для сайта зміну параметрів перегляду" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:783 +msgid "Enable page cache" +msgstr "Увімкнути кеш сторінок" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Whether the page cache should be used" +msgstr "Чи слід використовувати кешування сторінок" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:804 +msgid "Auto Resize Window" +msgstr "Автоматична зміна розмірів вікна" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:805 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" +"Автоматично змінювати розміри вікна верхнього рівня у відповідь на запит з " +"боку сторінки" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:837 +msgid "Enable Java Applet" +msgstr "Увімкнути аплет Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:838 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Чи слід вмикати підтримку аплетів Java за допомогою теґу <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2444 +msgid "Returns the @web_view's document title" +msgstr "Повертає заголовок документа @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2458 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Повертає поточну адресу URI даних, показаних у @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2471 +msgid "Copy target list" +msgstr "Список цілей копіювання" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2472 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "" +"Список адрес-цілей, які можна скопіювати з цієї веб-панелі до буфера обміну " +"даними" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2485 +msgid "Paste target list" +msgstr "Список вставки цілей" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2486 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "" +"Список цілей, які можна вставити до цієї веб-панелі з буфера обміну даними" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2492 +msgid "Settings" +msgstr "Параметри" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2493 +msgid "An associated WebKitWebSettings instance" +msgstr "Пов’язаний екземпляр WebKitWebSettings" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2506 +msgid "Web Inspector" +msgstr "Веб-ревізор" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2507 +msgid "The associated WebKitWebInspector instance" +msgstr "Пов’язаний екземпляр WebKitWebInspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2527 +msgid "Editable" +msgstr "Можна редагувати" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2528 +msgid "Whether content can be modified by the user" +msgstr "Чи може користувач змінювати вміст" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2534 +msgid "Transparent" +msgstr "Прозорий" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2535 +msgid "Whether content has a transparent background" +msgstr "Чи має вміст прозоре тло" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2548 +msgid "Zoom level" +msgstr "Масштабування" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2549 +msgid "The level of zoom of the content" +msgstr "Масштабування вмісту" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2564 +msgid "Full content zoom" +msgstr "Масштабування всього вмісту" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2565 +msgid "Whether the full content is scaled when zooming" +msgstr "Чи слід вмикати масштабування всього вмісту" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2578 +msgid "Encoding" +msgstr "Кодування" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2579 +msgid "The default encoding of the web view" +msgstr "Типове кодування веб-панелі" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2592 +msgid "Custom Encoding" +msgstr "Нетипове кодування" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2593 +msgid "The custom encoding of the web view" +msgstr "Нетипове кодування веб-панелі" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2645 +msgid "Icon URI" +msgstr "URI піктограми" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2646 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "URI піктограми для #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Надіслати" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Скинути" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Це покажчик з можливістю пошуку. Введіть ключові слова для пошуку: " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Виберіть файл" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Немає)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "Відкрити посилання у новому _вікні" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Звантажити пов’язаний файл" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "К_опіювати адресу посилання" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Відкрити зо_браження у новому вікні" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "З_берегти зображення як" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Коп_іювати зображення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Відкрити _фрейм у новому вікні" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "П_ерезавантажити" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Не знайдено відповідників" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "П_ропустити слово" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Додати слово" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Шукати у інтернеті" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "Ш_укати у словнику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Відкрити посилання" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "І_гнорувати граматику" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "_Правопис і граматика" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "По_казати перевірку правопису і граматики" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "С_ховати перевірку правопису і граматики" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "Пе_ревірити документ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Перевір_яти правопис під час введення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Перевірити _граматику з правописом" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Шрифт" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Обрис" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Перевірити е_лемент" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Немає нещодавніх пошуків" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Нещодавні пошуки" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "Сп_орожнити список пошуків" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "термін" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "визначення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "натиснути" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "вибрати" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "задіяти" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "зняти позначку" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "позначити" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "перейти" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:341 +msgid "Missing Plug-in" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid " files" +msgstr " файлів" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:352 +msgid "Unknown" +msgstr "Невідомо" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Loading..." +msgstr "Завантаження..." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:374 +msgid "Live Broadcast" +msgstr "Трансляція" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:380 +msgid "audio element controller" +msgstr "керування звуковим елементом" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:382 +msgid "video element controller" +msgstr "керування відеоелементом" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:384 +msgid "mute" +msgstr "вимкнути звук" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:386 +msgid "unmute" +msgstr "увімкнути звук" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:388 +msgid "play" +msgstr "відтворити" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:390 +msgid "pause" +msgstr "призупинити" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:392 +msgid "movie time" +msgstr "час відтворення відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:394 +msgid "timeline slider thumb" +msgstr "повзунок лінійки запису" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:396 +msgid "back 30 seconds" +msgstr "назад на 30 секунд" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:398 +msgid "return to realtime" +msgstr "повернутися до режиму реального часу" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:400 +msgid "elapsed time" +msgstr "час, що минув" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:402 +msgid "remaining time" +msgstr "час, що залишився:" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:404 +msgid "status" +msgstr "стан" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:406 +msgid "fullscreen" +msgstr "повноекранний режим" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:408 +msgid "fast forward" +msgstr "повний вперед" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:410 +msgid "fast reverse" +msgstr "повний назад" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:412 +msgid "show closed captions" +msgstr "показати вбудовані субтитри" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:414 +msgid "hide closed captions" +msgstr "приховати вбудовані субтитри" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:423 +msgid "audio element playback controls and status display" +msgstr "елементи керування відтворенням та показом стану аудіо" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:425 +msgid "video element playback controls and status display" +msgstr "елементи керування відтворенням та показом стану відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:427 +msgid "mute audio tracks" +msgstr "вимкнути звукові доріжки" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:429 +msgid "unmute audio tracks" +msgstr "увімкнути звукові доріжки" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:431 +msgid "begin playback" +msgstr "почати відтворення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:433 +msgid "pause playback" +msgstr "призупинити відтворення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:435 +msgid "movie time scrubber" +msgstr "зміна часу відтворення відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:437 +msgid "movie time scrubber thumb" +msgstr "позначка пересування часом відтворення відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:439 +msgid "seek movie back 30 seconds" +msgstr "перехід на 30 секунд назад" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:441 +msgid "return streaming movie to real time" +msgstr "повернути відтворення потокового відео у режим реального часу" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:443 +msgid "current movie time in seconds" +msgstr "поточний час відтворення відео у секундах" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:445 +msgid "number of seconds of movie remaining" +msgstr "кількість секунд до завершення відтворення відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:447 +msgid "current movie status" +msgstr "поточний стан відео" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:449 +msgid "seek quickly back" +msgstr "швидке перемотування назад" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:451 +msgid "seek quickly forward" +msgstr "швидке перемотування вперед" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:453 +msgid "Play movie in fullscreen mode" +msgstr "Відтворити відео у повноекранному режимі" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:455 +msgid "start displaying closed captions" +msgstr "почати показ вбудованих субтитрів" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:457 +msgid "stop displaying closed captions" +msgstr "припинити показ вбудованих субтитрів" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:466 +msgid "indefinite time" +msgstr "невизначений час" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:496 +msgid "value missing" +msgstr "не вистачає значення" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "type mismatch" +msgstr "невідповідність типів" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "pattern mismatch" +msgstr "невідповідність шаблонів" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "too long" +msgstr "занадто довгий" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range underflow" +msgstr "від’ємне переповнення діапазону" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "range overflow" +msgstr "переповнення діапазону" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:527 +msgid "step mismatch" +msgstr "невідповідність кроків" diff --git a/Source/WebKit/gtk/po/vi.po b/Source/WebKit/gtk/po/vi.po new file mode 100644 index 0000000..838860c --- /dev/null +++ b/Source/WebKit/gtk/po/vi.po @@ -0,0 +1,1078 @@ +# Vietnamese translation for WebKit. +# This file is put in the public domain. +# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2010-03-01 20:49+0700\n" +"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n" +"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "Tải tập tin lên" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "Kiểu _nhập" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "LRM Đánh dấu _Trái-sang-phải" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "RLM Đánh dấu _Phải-sang-trái" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "LRE _Nhúng Trái-sang-phải" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE N_húng Phải-sang-trái" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "LRO Đè T_rái-sang-phải" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "RLO Đè P_hải-sang-trái" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "PDF Định dạng hướng _Pop" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "ZWS khoảng trống không kích thước" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "ZWJ _Kết nối không kích thước" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZWNJ _Phi kết nối không kích thước" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "_Chèn kí tự Unicode" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "Yêu cầu mạng" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "Yêu cầu mạng cho URI cần tải về" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +msgid "Network Response" +msgstr "Hồi đáp mạng" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +msgid "The network response for the URI that should be downloaded" +msgstr "Hồi đáp mạng cho URI cần tải về" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "URI đích" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "URI đích nơi lưu tập tin" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "Tên tập tin đề nghị" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "Tên tập tin đề nghị mặc định khi lưu" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "Tiến trình" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "Xác định tiến độ tải về hiện thời" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "Tình trạng" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "Xác định tình trạng tải về hiện thời" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "Kích thước hiện thời" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "Lượng dữ liệu đã tải về" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "Kích thước tổng cộng" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "Kích thước của toàn bộ tập tin" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "Người dùng đã huỷ tải về" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "Trang %s đang yêu cầu tên người dùng và mật khẩu" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "Thông điệp máy chủ:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "Tên người dùng:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "Mật khẩu:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +msgid "_Remember password" +msgstr "_Nhớ mật khẩu" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "Tên" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "Tên khung" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "Tựa đề" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "Tựa đề tài liệu của khung" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "URI hiện thời của nội dung khung đang hiển thị" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "Quy tắc thanh cuộn ngang" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "Xác định quy tắc hiện thời cho thanh cuộn ngang của khung." + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "Quy tắc thanh cuộn dọc" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "Xác định quy tắc hiện thời cho thanh cuộn dọc của khung." + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "Tựa đề mục lược sử" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "Tựa đề thay thế" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "Tựa đề thay thế cho mục lược sử" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "URI cho mục lược sử" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "URI gốc" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "URI gốc của mục lược sử" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "Lần xem cuối" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "Thời điểm xem mục lược sử lần cuối" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Khung xem Web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Khung xem Web dùng để hiển thị bản thân Thanh tra Web" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "URI được điều tra" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "URI đang được điều tra" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "Bật kiểm định JavaScript" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "Kiểm định JavaScript được thực thi." + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +msgid "Enable Timeline profiling" +msgstr "Bật kiểm định trục thời gian" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "Nguyên nhân" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "Lý do duyệt gặp lỗi" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "URI được yêu cầu làm đích duyệt" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "Nút" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "Nút được dùng để nhấn" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "Trạng thái phím bổ trợ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "Bitmask đại diện trạng thái phím bổ trợ" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +msgid "Target frame" +msgstr "Khung đích" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +msgid "The target frame for the navigation" +msgstr "Khung đích để xem" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "Bảng mã mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "Bảng mã mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "Họ phông Cursive" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "Họ phông Cursive mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "Họ phông mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "Họ phông mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "Họ phông Fantasy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "Họ phông Fantasy mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "Họ phông Monospace" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "Họ phông Monospace mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Họ phông Sans Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "Họ phông Sans Serif mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Họ phông Serif" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "Họ phông Serif mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "Cỡ phông mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "Cỡ phông mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "Cỡ phông Monospace mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "Cỡ phông Monospace mặc định để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "Cỡ phông tối thiểu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "Cỡ phông tối thiểu để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "Cỡ phông logic tối thiểu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "Cỡ phông logic tối thiểu dùng để hiển thị văn bản." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "Ép 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "Ép độ phân giảii 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "Tự động nạp ảnh" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "Nạp ảnh tự động." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "Tự động co ảnh." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "Tự động co ảnh độc lập cho khít." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "In ảnh nền" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "Có in ảnh nền hay không." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "Bật script" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "Bật ngôn ngữ nhúng dạng script." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "Bật phần mở rộng" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "Bật phần mở rộng," + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "Ô văn bản có thể thay đổi kích thước." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "Ô văn bản có thể thay đổi kích thước hay không." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "URI stylesheet người dùng" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "URI của stylesheet áp dụng cho mọi trang." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "Giá trị bước thu/phóng" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "Giá trị thay đổi mức thu phóng mỗi lần." + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "Bật Developer Extras" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "Bật các phần mở rộng đặc biệt, hữu dụng cho người phát triển" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "Bật duyệt riêng tư" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "Bật chế độ duyệt riêng tư" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "Bật kiểm lỗi chính tả" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +msgid "Enables spell checking while typing" +msgstr "Kiểm lỗi chính tả khi đang gõ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "Ngôn ngữ kiểm lỗi chính tả" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "Danh sách ngôn ngữ kiểm lỗi chính tả, cách nhau bằng dấu phẩy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +msgid "Enable Caret Browsing" +msgstr "Bật con nháy" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "Có bật khả năng duyệt tăng cường bằng bàn phím không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "Bật Cơ sở dữ liệu HTML5" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "Có bật hỗ trợ Cơ sở dữ liệu HTML5 không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "Bật Kho chứa HTML5 cục bộ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "Có bật hỗ trợ Kho chứa HTML5 cục bộ không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +msgid "Enable XSS Auditor" +msgstr "Bật kiểm tra XSS" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "Có bật kiểm tra XSS không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "Đại diện người dùng" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "Chuỗi User-Agent WebKitGtk sẽ dùng" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript được phép mở cửa sổ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "JavaScript có được phép tự động mở cửa sổ không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "Bật lưu tạm ứng dụng web ngoại tuyến" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "Có bật lưu tạm ứng dụng web ngoại tuyến không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "Cách sửa đổi" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "Cách sửa đổi được sử dụng trong chế độ sửa đổi" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "Bật truy cập thống nhất từ URI của tập tin" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "Có cho phép truy cập thống nhất từ URI của tập tin không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +msgid "Enable DOM paste" +msgstr "Cho dán DOM" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "Có cho dán DOM không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "Xoay vòng phím Tab qua các thành phần" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "Có xoay vòng phím Tab trên các thành phần của trang không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "Bật menu ngữ cảnh mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "Cho phép phím chuột phải tạo menu ngữ cảnh mặc định" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "Bật khắc phục đặc thù cho các trang" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "Khắc phục những nhược điểm đặc thù của một số trang web" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "Bật page cache" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +msgid "Whether the page cache should be used" +msgstr "Có bật tính năng page cache không" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "Tự động đổi kích thước cửa sổ" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "Tự động thay đổi kích thước cửa sổ trên cùng khi trang yêu cầu" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +msgid "Enable Java Applet" +msgstr "Bật tiểu dụng Java" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "Cho phép hỗ trợ tiểu dụng Java bằng <applet>" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "Trả về tiêu đề tài liệu của @web_view" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "Trả về URI hiện thời của tài liệu được @web_view hiển thị" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "Danh sách đích chép" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "Danh sách đích mà khung xem web này hỗ trợ khi chép vào clipboard." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "Danh sách đích dán" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "Danh sách đích mà khung xem web này hỗ trợ khi dán clipboard." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "Thiết lập" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "Một thể hiện WebKitWebSettings liên kết" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Thanh tra Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "Một thể hiện WebKitWebInspector liên kết" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "Có thể thay đổi" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "Nội dung có thể bị người dùng thay đổi hay không" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "Trong suốt" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "Nội dung có ảnh nền trong suốt không." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "Mức phóng" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "Mức phóng to/thu nhỏ nội dung" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "Phóng nội dung đầy đủ" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "Toàn bộ nội dung có bị co lại không." + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "Bảng mã" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Bảng mã mặc định cho khung xem Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "Bảng mã tự chọn" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Bảng mã tự chọn cho khung xem Web" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "URI biểu tượng" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "URI của biểu tượng trang (favicon) cho #WebKitWebView." + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "Gửi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "Phục hồi" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "Đây là chỉ mục tìm kiếm được. Hãy nhập từ khoá cần tìm: " + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "Chọn tập tin" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(Không)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "_Mở liên kết trong cửa sổ mới" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "_Tải tập tin được liên kết" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "Chép vị trí _liên kết" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "Mở ả_nh trong cửa sổ mới" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "Lưu ảnh _là" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "Chép ả_nh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "Mở _khung trong cửa sổ mới" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "Nạp _lại" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "Không đoán ra" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "_Bỏ qua lỗi chính tả" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "_Học lỗi chính tả" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "_Tìm trên Web" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "_Tra từ điển" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "_Mở liên kết" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "Bỏ qua _ngữ pháp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "Chính tả và _Ngữ pháp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "_Hiện lỗi chính tả và ngữ pháp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "Ẩ_n Chính tả và Ngữ pháp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "_Kiểm tra tài liệu ngay" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "Kiểm tra khi đang _gõ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "Kiểm tra lỗi _ngữ pháp kèm chính tả" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "_Phông" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "_Nét ngoài" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "Thanh tra _yếu tố" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "Không có tìm kiếm gần đây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "Tìm kiếm gần đây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "_Xoá tìm kiếm gần đây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "thuật ngữ" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "định nghĩa" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "nhấn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "chọn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "kích hoạt" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "bỏ chọn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "chọn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "nhảy" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr " tập tin" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "Không biết" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "Đang nạp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "Phát trực tiếp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "bộ điều khiển phần tử âm thanh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "bộ điều khiển phần tử hình ảnh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "tắt tiếng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "không tắt tiếng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "phát" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "tạm dừng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "thời lượng phim" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "con chạy thời gian" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "lùi 30 giây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "trở về thời gian thực" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "thời gian đã qua" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "thời gian còn lại" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +msgid "status" +msgstr "tình trạng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "toàn màn hình" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "tới nhanh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "lùi lại" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "xay đầu đề" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "ẩn đầu đề" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "bộ điều khiển phần tử phát tiếng và hiển thị tình trạng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "bộ điều khiển phần tử phát hình và hiển thị tình trạng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "tắt tiếng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "không tắt tiếng" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "bắt đầu phát" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "tạm dừng phát" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "quay lùi phim 30 giây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "trở về luồng thời gian thực" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "thời gian của phim theo giây" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "số giây còn lại" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "tình trạng phim hiện thời" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "lùi ngược nhanh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "chạy tới nhanh" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "Xem phim toàn màn hình" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "bắt đầu hiển thị đầu đề" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "ngưng hiển thị đầu đề" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +msgid "indefinite time" +msgstr "vô hạn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "thiếu giá trị" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "kiểu không khớp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "mẫu không khớp" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "quá dài" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "phạm vi quá ngắn" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "phạm vi quá dài" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "nhảy bước không khớp" + +#~ msgid "_Searchable Index" +#~ msgstr "Chỉ mục _tìm được" diff --git a/Source/WebKit/gtk/po/zh_CN.po b/Source/WebKit/gtk/po/zh_CN.po new file mode 100644 index 0000000..8561fd8 --- /dev/null +++ b/Source/WebKit/gtk/po/zh_CN.po @@ -0,0 +1,1096 @@ +# Chinese translations for WebKit package +# WebKit 软件包的简体中文翻译. +# This file is put in public domain. +# +# Aron Xu <aronmalache@163.com>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: webkit 1.1.4\n" +"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" +"POT-Creation-Date: 2010-02-25 15:53-0300\n" +"PO-Revision-Date: 2009-07-14 18:11+0800\n" +"Last-Translator: Aron Xu <aronmalache@163.com>\n" +"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535 +msgid "Upload File" +msgstr "上传文件" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143 +msgid "Input _Methods" +msgstr "输入方式(_M)" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78 +msgid "LRM _Left-to-right mark" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79 +msgid "RLM _Right-to-left mark" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80 +msgid "LRE Left-to-right _embedding" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81 +msgid "RLE Right-to-left e_mbedding" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82 +msgid "LRO Left-to-right _override" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83 +msgid "RLO Right-to-left o_verride" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84 +msgid "PDF _Pop directional formatting" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85 +msgid "ZWS _Zero width space" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86 +msgid "ZWJ Zero width _joiner" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87 +msgid "ZWNJ Zero width _non-joiner" +msgstr "" + +#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138 +msgid "_Insert Unicode Control Character" +msgstr "插入 Unicode 控制字符(_I)" + +#: WebKit/gtk/webkit/webkitdownload.cpp:266 +msgid "Network Request" +msgstr "网络请求" + +#: WebKit/gtk/webkit/webkitdownload.cpp:267 +msgid "The network request for the URI that should be downloaded" +msgstr "网络请求该 URI 应当被下载" + +#: WebKit/gtk/webkit/webkitdownload.cpp:281 +#, fuzzy +msgid "Network Response" +msgstr "网络请求" + +#: WebKit/gtk/webkit/webkitdownload.cpp:282 +#, fuzzy +msgid "The network response for the URI that should be downloaded" +msgstr "网络请求该 URI 应当被下载" + +#: WebKit/gtk/webkit/webkitdownload.cpp:296 +msgid "Destination URI" +msgstr "目的 URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:297 +msgid "The destination URI where to save the file" +msgstr "保存文件的目的 URI" + +#: WebKit/gtk/webkit/webkitdownload.cpp:311 +msgid "Suggested Filename" +msgstr "建议文件名" + +#: WebKit/gtk/webkit/webkitdownload.cpp:312 +msgid "The filename suggested as default when saving" +msgstr "保存时默认建议使用的文件名" + +#: WebKit/gtk/webkit/webkitdownload.cpp:329 +msgid "Progress" +msgstr "进度" + +#: WebKit/gtk/webkit/webkitdownload.cpp:330 +msgid "Determines the current progress of the download" +msgstr "显示当前下载进度" + +#: WebKit/gtk/webkit/webkitdownload.cpp:343 +msgid "Status" +msgstr "状态" + +#: WebKit/gtk/webkit/webkitdownload.cpp:344 +msgid "Determines the current status of the download" +msgstr "显示当前下载状态" + +#: WebKit/gtk/webkit/webkitdownload.cpp:359 +msgid "Current Size" +msgstr "当前尺寸" + +#: WebKit/gtk/webkit/webkitdownload.cpp:360 +msgid "The length of the data already downloaded" +msgstr "当前已下载的数据大小" + +#: WebKit/gtk/webkit/webkitdownload.cpp:374 +msgid "Total Size" +msgstr "总尺寸" + +#: WebKit/gtk/webkit/webkitdownload.cpp:375 +msgid "The total size of the file" +msgstr "文件总尺寸" + +#: WebKit/gtk/webkit/webkitdownload.cpp:526 +msgid "User cancelled the download" +msgstr "用户取消了下载" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248 +#, c-format +msgid "A username and password are being requested by the site %s" +msgstr "站点 %s 请求用户名和密码" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278 +msgid "Server message:" +msgstr "" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291 +msgid "Username:" +msgstr "用户名:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293 +msgid "Password:" +msgstr "密码:" + +#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302 +#, fuzzy +msgid "_Remember password" +msgstr "记住密码" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:298 +msgid "Name" +msgstr "名称" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:299 +msgid "The name of the frame" +msgstr "框架名称" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:305 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146 +#: WebKit/gtk/webkit/webkitwebview.cpp:2318 +msgid "Title" +msgstr "标题" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:306 +msgid "The document title of the frame" +msgstr "标题名称" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:312 +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178 +#: WebKit/gtk/webkit/webkitwebview.cpp:2332 +msgid "URI" +msgstr "URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:313 +msgid "The current URI of the contents displayed by the frame" +msgstr "框架中当前显示内容的 URI" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:344 +msgid "Horizontal Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:345 +#, fuzzy +msgid "" +"Determines the current policy for the horizontal scrollbar of the frame." +msgstr "显示当前下载进度" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:362 +msgid "Vertical Scrollbar Policy" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebframe.cpp:363 +#, fuzzy +msgid "Determines the current policy for the vertical scrollbar of the frame." +msgstr "显示当前下载进度" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147 +msgid "The title of the history item" +msgstr "历史条目的标题" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162 +msgid "Alternate Title" +msgstr "可选标题" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163 +msgid "The alternate title of the history item" +msgstr "历史条目的可选标题" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179 +msgid "The URI of the history item" +msgstr "历史条目的 URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194 +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173 +msgid "Original URI" +msgstr "原始 URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195 +msgid "The original URI of the history item" +msgstr "历史条目的原始 URI" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210 +msgid "Last visited Time" +msgstr "最近访问时间" + +#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211 +msgid "The time at which the history item was last visited" +msgstr "最近访问历史条目的时间" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:268 +msgid "Web View" +msgstr "Web View" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:269 +msgid "The Web View that renders the Web Inspector itself" +msgstr "Web View 渲染 Web Inspector 本身" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:282 +msgid "Inspected URI" +msgstr "已检查的 URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:283 +msgid "The URI that is currently being inspected" +msgstr "当前已经被检查的 URI" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:299 +msgid "Enable JavaScript profiling" +msgstr "启用 JavaScript 摘要" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:300 +msgid "Profile the executed JavaScript." +msgstr "记录已执行的 JavaScript 的摘要信息。" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:315 +#, fuzzy +msgid "Enable Timeline profiling" +msgstr "启用 JavaScript 摘要" + +#: WebKit/gtk/webkit/webkitwebinspector.cpp:316 +msgid "Profile the WebCore instrumentation." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158 +msgid "Reason" +msgstr "原因" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159 +msgid "The reason why this navigation is occurring" +msgstr "导航产生的原因" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174 +msgid "The URI that was requested as the target for the navigation" +msgstr "此 URI 是被作为导航目标而请求的" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188 +msgid "Button" +msgstr "按钮" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189 +msgid "The button used to click" +msgstr "用以点击的按钮" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204 +msgid "Modifier state" +msgstr "修饰键信息" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205 +msgid "A bitmask representing the state of the modifier keys" +msgstr "一个代表当前修饰键状态的位掩码" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220 +#, fuzzy +msgid "Target frame" +msgstr "框架名称" + +#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221 +#, fuzzy +msgid "The target frame for the navigation" +msgstr "此 URI 是被作为导航目标而请求的" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:237 +msgid "Default Encoding" +msgstr "默认编码" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:238 +msgid "The default encoding used to display text." +msgstr "用以显示文本的默认编码。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:246 +msgid "Cursive Font Family" +msgstr "草书字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:247 +msgid "The default Cursive font family used to display text." +msgstr "用以显示文本的默认草书字体。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:255 +msgid "Default Font Family" +msgstr "默认字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:256 +msgid "The default font family used to display text." +msgstr "用以显示文本的默认字体。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:264 +msgid "Fantasy Font Family" +msgstr "幻想字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:265 +msgid "The default Fantasy font family used to display text." +msgstr "用以显示文本的默认幻想字体。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:273 +msgid "Monospace Font Family" +msgstr "等宽字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:274 +msgid "The default font family used to display monospace text." +msgstr "用以显示文本的默认等宽字体。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:282 +msgid "Sans Serif Font Family" +msgstr "Sans Serif 字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:283 +msgid "The default Sans Serif font family used to display text." +msgstr "用以显示文本的默认 Sans Serif 字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:291 +msgid "Serif Font Family" +msgstr "Serif 字体" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:292 +msgid "The default Serif font family used to display text." +msgstr "用以显示文本的默认 Serif 字体。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:300 +msgid "Default Font Size" +msgstr "默认字号" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:301 +msgid "The default font size used to display text." +msgstr "用以显示文本的默认字号。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:309 +msgid "Default Monospace Font Size" +msgstr "默认等宽字号" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:310 +msgid "The default font size used to display monospace text." +msgstr "用以显示等宽文本的默认字号。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:318 +msgid "Minimum Font Size" +msgstr "最小字号" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:319 +msgid "The minimum font size used to display text." +msgstr "用以显示文本的最小字号。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:327 +msgid "Minimum Logical Font Size" +msgstr "最小逻辑字号" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:328 +msgid "The minimum logical font size used to display text." +msgstr "用以显示文本的最小逻辑字号。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:347 +msgid "Enforce 96 DPI" +msgstr "强制为 96 DPI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:348 +msgid "Enforce a resolution of 96 DPI" +msgstr "强制 96 DPI 分辨率" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:356 +msgid "Auto Load Images" +msgstr "自动载入图像" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:357 +msgid "Load images automatically." +msgstr "自动载入图像。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:365 +msgid "Auto Shrink Images" +msgstr "自动缩小图像" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:366 +msgid "Automatically shrink standalone images to fit." +msgstr "自动缩小单个图像以适应需求。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:374 +msgid "Print Backgrounds" +msgstr "打印背景" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:375 +msgid "Whether background images should be printed." +msgstr "是否打印背景。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:383 +msgid "Enable Scripts" +msgstr "启用脚本" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:384 +msgid "Enable embedded scripting languages." +msgstr "启用嵌入式脚步语言" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:392 +msgid "Enable Plugins" +msgstr "启用插件" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:393 +msgid "Enable embedded plugin objects." +msgstr "启用嵌入式插件对象。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:401 +msgid "Resizable Text Areas" +msgstr "大小可变文本域" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:402 +msgid "Whether text areas are resizable." +msgstr "文本域大小是否是否可变。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:409 +msgid "User Stylesheet URI" +msgstr "用户样式表 URI" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:410 +msgid "The URI of a stylesheet that is applied to every page." +msgstr "应用于每个页面的样式表的 URI。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:425 +msgid "Zoom Stepping Value" +msgstr "缩放步值" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:426 +msgid "The value by which the zoom level is changed when zooming in or out." +msgstr "在放大或缩小中每次缩放的步值。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:444 +msgid "Enable Developer Extras" +msgstr "启用开发者附加" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:445 +msgid "Enables special extensions that help developers" +msgstr "启用帮助开发者的特殊扩展" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:465 +msgid "Enable Private Browsing" +msgstr "启用隐私浏览" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:466 +msgid "Enables private browsing mode" +msgstr "启用隐私浏览模式" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:481 +msgid "Enable Spell Checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:482 +#, fuzzy +msgid "Enables spell checking while typing" +msgstr "输入时检查拼写(_T)" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:505 +msgid "Languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:506 +msgid "Comma separated list of languages to use for spell checking" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:520 +#, fuzzy +msgid "Enable Caret Browsing" +msgstr "启用隐私浏览" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:521 +msgid "Whether to enable accesibility enhanced keyboard navigation" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:536 +msgid "Enable HTML5 Database" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:537 +msgid "Whether to enable HTML5 database support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:552 +msgid "Enable HTML5 Local Storage" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:553 +msgid "Whether to enable HTML5 Local Storage support" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:567 +#, fuzzy +msgid "Enable XSS Auditor" +msgstr "启用脚本" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:568 +msgid "Whether to enable teh XSS auditor" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:586 +msgid "User Agent" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:587 +msgid "The User-Agent string used by WebKitGtk" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:602 +msgid "JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:603 +msgid "Whether JavaScript can open windows automatically" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:618 +msgid "Enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:619 +msgid "Whether to enable offline web application cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:646 +msgid "Editing behavior" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:647 +msgid "The behavior mode to use in editing mode" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:663 +msgid "Enable universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:664 +msgid "Whether to allow universal access from file URIs" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:679 +#, fuzzy +msgid "Enable DOM paste" +msgstr "启用脚本" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:680 +msgid "Whether to enable DOM paste" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:698 +msgid "Tab key cycles through elements" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:699 +msgid "Whether the tab key cycles through elements on the page." +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:719 +msgid "Enable Default Context Menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:720 +msgid "" +"Enables the handling of right-clicks for the creation of the default context " +"menu" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:740 +msgid "Enable Site Specific Quirks" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:741 +msgid "Enables the site-specific compatibility workarounds" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:763 +msgid "Enable page cache" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:764 +#, fuzzy +msgid "Whether the page cache should be used" +msgstr "是否打印背景。" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:784 +msgid "Auto Resize Window" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:785 +msgid "Automatically resize the toplevel window when a page requests it" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:817 +#, fuzzy +msgid "Enable Java Applet" +msgstr "启用 JavaScript 摘要" + +#: WebKit/gtk/webkit/webkitwebsettings.cpp:818 +msgid "Whether Java Applet support through <applet> should be enabled" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2319 +msgid "Returns the @web_view's document title" +msgstr "返回 @web_view 的文档标题" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2333 +msgid "Returns the current URI of the contents displayed by the @web_view" +msgstr "返回当前由 @web_view 显示的内容的 URI" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2346 +msgid "Copy target list" +msgstr "复制目标列表" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2347 +msgid "The list of targets this web view supports for clipboard copying" +msgstr "目标 Web View 列表支持剪贴簿复制" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2360 +msgid "Paste target list" +msgstr "粘贴目标列表" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2361 +msgid "The list of targets this web view supports for clipboard pasting" +msgstr "目标 Web View 列表支持剪贴簿粘贴" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2367 +msgid "Settings" +msgstr "设置" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2368 +msgid "An associated WebKitWebSettings instance" +msgstr "一个关联的 WebKitWebSettings 样例" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2381 +msgid "Web Inspector" +msgstr "Web Inspector" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2382 +msgid "The associated WebKitWebInspector instance" +msgstr "一个关联的 WebKitWebInspector 样例" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2402 +msgid "Editable" +msgstr "可编辑" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2403 +msgid "Whether content can be modified by the user" +msgstr "用户是否可编辑内容" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2409 +msgid "Transparent" +msgstr "透明" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2410 +msgid "Whether content has a transparent background" +msgstr "内容是否包含透明背景" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2423 +msgid "Zoom level" +msgstr "缩放级别" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2424 +msgid "The level of zoom of the content" +msgstr "内容缩放级别" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2439 +msgid "Full content zoom" +msgstr "完整内容缩放" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2440 +msgid "Whether the full content is scaled when zooming" +msgstr "是否将所有内容完整缩放" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2453 +msgid "Encoding" +msgstr "编码" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2454 +msgid "The default encoding of the web view" +msgstr "Web View 的默认编码" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2467 +msgid "Custom Encoding" +msgstr "自定义编码" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2468 +msgid "The custom encoding of the web view" +msgstr "Web View的自定义编码" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2520 +msgid "Icon URI" +msgstr "" + +#: WebKit/gtk/webkit/webkitwebview.cpp:2521 +msgid "The URI for the favicon for the #WebKitWebView." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55 +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60 +msgid "Submit" +msgstr "提交" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65 +msgid "Reset" +msgstr "重置" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70 +msgid "This is a searchable index. Enter search keywords: " +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75 +msgid "Choose File" +msgstr "选择文件" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80 +msgid "(None)" +msgstr "(无)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85 +msgid "Open Link in New _Window" +msgstr "在新窗口打开链接(_W)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90 +msgid "_Download Linked File" +msgstr "下载目标文件(_D)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95 +msgid "Copy Link Loc_ation" +msgstr "复制链接地址(_A)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100 +msgid "Open _Image in New Window" +msgstr "在新窗口打开图像(_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105 +msgid "Sa_ve Image As" +msgstr "保存图像(_V)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110 +msgid "Cop_y Image" +msgstr "复制图像(_Y)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115 +msgid "Open _Frame in New Window" +msgstr "在新窗口打开框架(_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166 +msgid "_Reload" +msgstr "重载(_R)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183 +msgid "No Guesses Found" +msgstr "没有找到拼写建议" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188 +msgid "_Ignore Spelling" +msgstr "忽略拼写(_I)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193 +msgid "_Learn Spelling" +msgstr "记录特例(_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198 +msgid "_Search the Web" +msgstr "搜索互联网(_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203 +msgid "_Look Up in Dictionary" +msgstr "查询词典(_L)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208 +msgid "_Open Link" +msgstr "打开链接(_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213 +msgid "Ignore _Grammar" +msgstr "忽略语法(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218 +msgid "Spelling and _Grammar" +msgstr "拼写和语法(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Show Spelling and Grammar" +msgstr "显示拼写和语法(_S)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223 +msgid "_Hide Spelling and Grammar" +msgstr "隐藏拼写和语法(_H)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228 +msgid "_Check Document Now" +msgstr "立即检查文档(_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233 +msgid "Check Spelling While _Typing" +msgstr "输入时检查拼写(_T)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238 +msgid "Check _Grammar With Spelling" +msgstr "检查拼写时检查语法(_G)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243 +msgid "_Font" +msgstr "字体(_F)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266 +msgid "_Outline" +msgstr "概要(_O)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271 +msgid "Inspect _Element" +msgstr "检查元素(_E)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276 +msgid "No recent searches" +msgstr "无最近搜索" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281 +msgid "Recent searches" +msgstr "最近搜索" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286 +msgid "_Clear recent searches" +msgstr "清除最近搜索记录(_C)" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291 +msgid "term" +msgstr "术语" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296 +msgid "definition" +msgstr "定义" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301 +msgid "press" +msgstr "按" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306 +msgid "select" +msgstr "选择" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311 +msgid "activate" +msgstr "激活" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316 +msgid "uncheck" +msgstr "反选" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321 +msgid "check" +msgstr "勾选" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326 +msgid "jump" +msgstr "跳转" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342 +msgid " files" +msgstr "文件" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347 +msgid "Unknown" +msgstr "未知" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364 +msgid "Loading..." +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369 +msgid "Live Broadcast" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375 +msgid "audio element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377 +msgid "video element controller" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379 +msgid "mute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381 +msgid "unmute" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383 +msgid "play" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385 +msgid "pause" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387 +msgid "movie time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389 +msgid "timeline slider thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391 +msgid "back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393 +msgid "return to realtime" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395 +msgid "elapsed time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397 +msgid "remaining time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399 +#, fuzzy +msgid "status" +msgstr "状态" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401 +msgid "fullscreen" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403 +msgid "fast forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405 +msgid "fast reverse" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407 +msgid "show closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409 +msgid "hide closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418 +msgid "audio element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420 +msgid "video element playback controls and status display" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422 +msgid "mute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424 +msgid "unmute audio tracks" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426 +msgid "begin playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428 +msgid "pause playback" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430 +msgid "movie time scrubber" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432 +msgid "movie time scrubber thumb" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434 +msgid "seek movie back 30 seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436 +msgid "return streaming movie to real time" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438 +msgid "current movie time in seconds" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440 +msgid "number of seconds of movie remaining" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442 +msgid "current movie status" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444 +msgid "seek quickly back" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446 +msgid "seek quickly forward" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448 +msgid "Play movie in fullscreen mode" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450 +msgid "start displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452 +msgid "stop displaying closed captions" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461 +#, fuzzy +msgid "indefinite time" +msgstr "定义" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491 +msgid "value missing" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497 +msgid "type mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502 +msgid "pattern mismatch" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507 +msgid "too long" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512 +msgid "range underflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517 +msgid "range overflow" +msgstr "" + +#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522 +msgid "step mismatch" +msgstr "" + +#~ msgid "_Searchable Index" +#~ msgstr "可搜索索引(_S)" diff --git a/Source/WebKit/gtk/resources/error.html b/Source/WebKit/gtk/resources/error.html new file mode 100644 index 0000000..27d4a57 --- /dev/null +++ b/Source/WebKit/gtk/resources/error.html @@ -0,0 +1,60 @@ +<html> +<head> +<title>Error</title> +<style type="text/css"> +body { + background-color: #fff; + margin: 0; + padding: 0; +} + +#errorContainer { + background: #fff; + min-width: 35em; + max-width: 35em; + position: absolute; + top: 2em; + left: 1em; + padding: 10px; + border: 2px solid #eee; + -webkit-border-radius: 5px; +} + +#errorTitleText { + font-size: 120%; + font-weight: bold; +} + +#errorMessageText { + font-size: 80%; +} + +</style> +<script type="text/javascript"> + +function tryagain() +{ + location.reload(); +} +</script> +</head> +<body> +<div id="errorContainer"> + +<div id="errorTitle"> + <p id="errorTitleText">Unable to load page</p> +</div> +<div id="errorMessage"> + <p>Problem occurred while loading the URL %s</p> + <p id="errorMessageText">%s</a> +</p> +</div> + +<form name="bl"> +<input type="button" value="Try again" onclick="javascript:tryagain()" /> +</form> + +</div> + +</body> +</html> diff --git a/Source/WebKit/gtk/tests/resources/blank.ico b/Source/WebKit/gtk/tests/resources/blank.ico Binary files differnew file mode 100644 index 0000000..ea848b9 --- /dev/null +++ b/Source/WebKit/gtk/tests/resources/blank.ico diff --git a/Source/WebKit/gtk/tests/resources/test.html b/Source/WebKit/gtk/tests/resources/test.html new file mode 100644 index 0000000..98f7d4f --- /dev/null +++ b/Source/WebKit/gtk/tests/resources/test.html @@ -0,0 +1,6 @@ +<html> +<head><title>test</title></head> +<body>test</body> +</html>></head> +<body>test</body> +</html> diff --git a/Source/WebKit/gtk/tests/resources/test.ogg b/Source/WebKit/gtk/tests/resources/test.ogg Binary files differnew file mode 100644 index 0000000..7f3a3b9 --- /dev/null +++ b/Source/WebKit/gtk/tests/resources/test.ogg diff --git a/Source/WebKit/gtk/tests/resources/test.pdf b/Source/WebKit/gtk/tests/resources/test.pdf Binary files differnew file mode 100644 index 0000000..2424c19 --- /dev/null +++ b/Source/WebKit/gtk/tests/resources/test.pdf diff --git a/Source/WebKit/gtk/tests/resources/test.txt b/Source/WebKit/gtk/tests/resources/test.txt new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/Source/WebKit/gtk/tests/resources/test.txt @@ -0,0 +1 @@ +test diff --git a/Source/WebKit/gtk/tests/test_utils.c b/Source/WebKit/gtk/tests/test_utils.c new file mode 100644 index 0000000..646fd25 --- /dev/null +++ b/Source/WebKit/gtk/tests/test_utils.c @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2010 Arno Renevier + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <glib.h> +#include <glib/gstdio.h> + +int testutils_relative_chdir(const gchar* target_filename, const gchar* executable_path) +{ + if (g_path_is_absolute(executable_path)) { + if (g_chdir(g_path_get_dirname(executable_path))) { + return -1; + } + } + + while (!g_file_test(target_filename, G_FILE_TEST_EXISTS)) { + gchar *path_name; + if (g_chdir("..")) { + return -1; + } + g_assert(!g_str_equal((path_name = g_get_current_dir()), "/")); + g_free(path_name); + } + + gchar* dirname = g_path_get_dirname(target_filename); + if (g_chdir(dirname)) { + g_free(dirname); + return -1; + } + + g_free(dirname); + return 0; +} diff --git a/Source/WebKit/gtk/tests/test_utils.h b/Source/WebKit/gtk/tests/test_utils.h new file mode 100644 index 0000000..e761f74 --- /dev/null +++ b/Source/WebKit/gtk/tests/test_utils.h @@ -0,0 +1,3 @@ +#include <glib.h> + +int testutils_relative_chdir(const gchar*, const gchar*); diff --git a/Source/WebKit/gtk/tests/testatk.c b/Source/WebKit/gtk/tests/testatk.c new file mode 100644 index 0000000..1ee6c55 --- /dev/null +++ b/Source/WebKit/gtk/tests/testatk.c @@ -0,0 +1,1345 @@ +/* + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <unistd.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static const char* centeredContents = "<html><body><p style='text-align: center;'>Short line</p><p style='text-align: center;'>Long-size line with some foo bar baz content</p><p style='text-align: center;'>Short line</p><p style='text-align: center;'>This is a multi-line paragraph<br />where the first line<br />is the biggest one</p></body></html>"; + +static const char* contents = "<html><body><p>This is a test. This is the second sentence. And this the third.</p></body></html>"; + +static const char* contentsWithNewlines = "<html><body><p>This is a test. \n\nThis\n is the second sentence. And this the third.</p></body></html>"; + +static const char* contentsInTextarea = "<html><body><textarea cols='80'>This is a test. This is the second sentence. And this the third.</textarea></body></html>"; + +static const char* contentsInTextInput = "<html><body><input type='text' size='80' value='This is a test. This is the second sentence. And this the third.'/></body></html>"; + +static const char* contentsInParagraphAndBodySimple = "<html><body><p>This is a test.</p>Hello world.</body></html>"; + +static const char* contentsInParagraphAndBodyModerate = "<html><body><p>This is a test.</p>Hello world.<br /><font color='#00cc00'>This sentence is green.</font><br />This one is not.</body></html>"; + +static const char* contentsInTable = "<html><body><table><tr><td>foo</td><td>bar</td></tr></table></body></html>"; + +static const char* contentsInTableWithHeaders = "<html><body><table><tr><th>foo</th><th>bar</th><th colspan='2'>baz</th></tr><tr><th>qux</th><td>1</td><td>2</td><td>3</td></tr><tr><th rowspan='2'>quux</th><td>4</td><td>5</td><td>6</td></tr><tr><td>6</td><td>7</td><td>8</td></tr><tr><th>corge</th><td>9</td><td>10</td><td>11</td></tr></table><table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table></body></html>"; + +static const char* comboBoxSelector = "<html><body><select><option selected value='foo'>foo</option><option value='bar'>bar</option></select></body></html>"; + +static const char* formWithTextInputs = "<html><body><form><input type='text' name='entry' /></form></body></html>"; + +static const char* hypertextAndHyperlinks = "<html><body><p>A paragraph with no links at all</p><p><a href='http://foo.bar.baz/'>A line</a> with <a href='http://bar.baz.foo/'>a link in the middle</a> as well as at the beginning and <a href='http://baz.foo.bar/'>at the end</a></p></body></html>"; + +static const char* layoutAndDataTables = "<html><body><table><tr><th>Odd</th><th>Even</th></tr><tr><td>1</td><td>2</td></tr></table><table><tr><td>foo</td><td>bar</td></tr></table></body></html>"; + +static const char* linksWithInlineImages = "<html><head><style>a.http:before {content: url(no-image.png);}</style><body><p><a class='http' href='foo'>foo</a> bar baz</p><p>foo <a class='http' href='bar'>bar</a> baz</p><p>foo bar <a class='http' href='baz'>baz</a></p></body></html>"; + +static const char* listsOfItems = "<html><body><ul><li>text only</li><li><a href='foo'>link only</a></li><li>text and a <a href='bar'>link</a></li></ul><ol><li>text only</li><li><a href='foo'>link only</a></li><li>text and a <a href='bar'>link</a></li></ol></body></html>"; + +static const char* textForSelections = "<html><body><p>A paragraph with plain text</p><p>A paragraph with <a href='http://webkit.org'>a link</a> in the middle</p></body></html>"; + +static const char* textWithAttributes = "<html><head><style>.st1 {font-family: monospace; color:rgb(120,121,122);} .st2 {text-decoration:underline; background-color:rgb(80,81,82);}</style></head><body><p style=\"font-size:14; text-align:right;\">This is the <i>first</i><b> sentence of this text.</b></p><p class=\"st1\">This sentence should have an style applied <span class=\"st2\">and this part should have another one</span>.</p><p>x<sub>1</sub><sup>2</sup>=x<sub>2</sub><sup>3</sup></p><p style=\"text-align:center;\">This sentence is the <strike>last</strike> one.</p></body></html>"; + +static void waitForAccessibleObjects() +{ + /* Manually spin the main context to make sure the accessible + objects are properly created before continuing. */ + while (g_main_context_pending(0)) + g_main_context_iteration(0, TRUE); +} + +typedef gchar* (*AtkGetTextFunction) (AtkText*, gint, AtkTextBoundary, gint*, gint*); + +static void testGetTextFunction(AtkText* textObject, AtkGetTextFunction fn, AtkTextBoundary boundary, gint offset, const char* textResult, gint startOffsetResult, gint endOffsetResult) +{ + gint startOffset; + gint endOffset; + char* text = fn(textObject, offset, boundary, &startOffset, &endOffset); + g_assert_cmpstr(text, ==, textResult); + g_assert_cmpint(startOffset, ==, startOffsetResult); + g_assert_cmpint(endOffset, ==, endOffsetResult); + g_free(text); +} + +static void runGetTextTests(AtkText* textObject) +{ + char* text = atk_text_get_text(textObject, 0, -1); + g_assert_cmpstr(text, ==, "This is a test. This is the second sentence. And this the third."); + g_free(text); + + /* ATK_TEXT_BOUNDARY_CHAR */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR, + 0, "T", 0, 1); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR, + 0, "h", 1, 2); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR, + 0, "", 0, 0); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR, + 1, "T", 0, 1); + + /* ATK_TEXT_BOUNDARY_WORD_START */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, + 0, "This ", 0, 5); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, + 4, "This ", 0, 5); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, + 10, "test. ", 10, 16); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START, + 58, "third.", 58, 64); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START, + 5, "This ", 0, 5); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START, + 7, "This ", 0, 5); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START, + 0, "is ", 5, 8); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START, + 4, "is ", 5, 8); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START, + 3, "is ", 5, 8); + + /* ATK_TEXT_BOUNDARY_WORD_END */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, + 0, "This", 0, 4); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, + 4, " is", 4, 7); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, + 5, " is", 4, 7); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, + 9, " test", 9, 14); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END, + 5, "This", 0, 4); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END, + 4, "This", 0, 4); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END, + 7, " is", 4, 7); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END, + 5, " a", 7, 9); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END, + 4, " a", 7, 9); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END, + 58, " third", 57, 63); + + /* ATK_TEXT_BOUNDARY_SENTENCE_START */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 0, "This is a test. ", 0, 16); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 15, "This is a test. ", 0, 16); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 0, "This is the second sentence. ", 16, 45); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 15, "This is the second sentence. ", 16, 45); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 16, "This is a test. ", 0, 16); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 44, "This is a test. ", 0, 16); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START, + 15, "", 0, 0); + + /* ATK_TEXT_BOUNDARY_SENTENCE_END */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 0, "This is a test.", 0, 15); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 15, " This is the second sentence.", 15, 44); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 16, " This is the second sentence.", 15, 44); + + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 17, " This is the second sentence.", 15, 44); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 0, " This is the second sentence.", 15, 44); + + testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 15, " And this the third.", 44, 64); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 16, "This is a test.", 0, 15); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 15, "This is a test.", 0, 15); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 14, "", 0, 0); + + testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END, + 44, " This is the second sentence.", 15, 44); + + /* It's trick to test these properly right now, since our a11y + implementation splits different lines in different a11y items. */ + /* ATK_TEXT_BOUNDARY_LINE_START */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START, + 0, "This is a test. This is the second sentence. And this the third.", 0, 64); + + /* ATK_TEXT_BOUNDARY_LINE_END */ + testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END, + 0, "This is a test. This is the second sentence. And this the third.", 0, 64); +} + +static void testWebkitAtkComboBox() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, comboBoxSelector, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkObject* formObject = atk_object_ref_accessible_child(object, 0); + g_assert(formObject); + + AtkObject* comboBox = atk_object_ref_accessible_child(formObject, 0); + g_assert(ATK_IS_OBJECT(comboBox)); + + AtkObject* menuPopup = atk_object_ref_accessible_child(comboBox, 0); + g_assert(ATK_IS_OBJECT(menuPopup)); + + AtkObject* item1 = atk_object_ref_accessible_child(menuPopup, 0); + g_assert(ATK_IS_OBJECT(item1)); + + AtkObject* item2 = atk_object_ref_accessible_child(menuPopup, 1); + g_assert(ATK_IS_OBJECT(item2)); + + /* Check roles. */ + g_assert(atk_object_get_role(comboBox) == ATK_ROLE_COMBO_BOX); + g_assert(atk_object_get_role(menuPopup) == ATK_ROLE_MENU); + g_assert(atk_object_get_role(item1) == ATK_ROLE_MENU_ITEM); + g_assert(atk_object_get_role(item2) == ATK_ROLE_MENU_ITEM); + + /* Check the implementation of the AtkSelection interface. */ + g_assert(ATK_IS_SELECTION(comboBox)); + AtkSelection* atkSelection = ATK_SELECTION(comboBox); + g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1); + g_assert(atk_selection_is_child_selected(atkSelection, 0)); + g_assert(!atk_selection_is_child_selected(atkSelection, 1)); + AtkObject* selectedItem = atk_selection_ref_selection(atkSelection, 0); + g_assert(selectedItem == item1); + g_object_unref(selectedItem); + + /* Check the implementations of the AtkAction interface. */ + g_assert(ATK_IS_ACTION(comboBox)); + AtkAction* atkAction = ATK_ACTION(comboBox); + g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1); + g_assert(atk_action_do_action(atkAction, 0)); + + g_assert(ATK_IS_ACTION(menuPopup)); + atkAction = ATK_ACTION(menuPopup); + g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1); + g_assert(atk_action_do_action(atkAction, 0)); + + g_assert(ATK_IS_ACTION(item1)); + atkAction = ATK_ACTION(item1); + g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1); + g_assert(atk_action_do_action(atkAction, 0)); + + g_assert(ATK_IS_ACTION(item2)); + atkAction = ATK_ACTION(item2); + g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1); + g_assert(atk_action_do_action(atkAction, 0)); + + /* After selecting the second item, selection should have changed. */ + g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1); + g_assert(!atk_selection_is_child_selected(atkSelection, 0)); + g_assert(atk_selection_is_child_selected(atkSelection, 1)); + selectedItem = atk_selection_ref_selection(atkSelection, 0); + g_assert(selectedItem == item2); + g_object_unref(selectedItem); + + /* Check the implementation of the AtkText interface. */ + g_assert(ATK_IS_TEXT(item1)); + AtkText* atkText = ATK_TEXT(item1); + char *text = atk_text_get_text(atkText, 0, -1); + g_assert_cmpstr(text, ==, "foo"); + g_free(text); + text = atk_text_get_text(atkText, 0, 2); + g_assert_cmpstr(text, ==, "fo"); + g_free(text); + + g_assert(ATK_IS_TEXT(item2)); + atkText = ATK_TEXT(item2); + text = atk_text_get_text(atkText, 0, -1); + g_assert_cmpstr(text, ==, "bar"); + g_free(text); + text = atk_text_get_text(atkText, 1, 3); + g_assert_cmpstr(text, ==, "ar"); + g_free(text); + + g_object_unref(formObject); + g_object_unref(comboBox); + g_object_unref(menuPopup); + g_object_unref(item1); + g_object_unref(item2); + g_object_unref(webView); +} + +static void testWebkitAtkGetTextAtOffsetForms() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contents, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + AtkText* textObject = ATK_TEXT(object); + g_assert(ATK_IS_TEXT(textObject)); + + runGetTextTests(textObject); + + g_object_unref(webView); +} + +static void testWebkitAtkGetTextAtOffset() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contents, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + AtkText* textObject = ATK_TEXT(object); + g_assert(ATK_IS_TEXT(textObject)); + + runGetTextTests(textObject); + + g_object_unref(webView); +} + +static void testWebkitAtkGetTextAtOffsetNewlines() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsWithNewlines, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + AtkText* textObject = ATK_TEXT(object); + g_assert(ATK_IS_TEXT(textObject)); + + runGetTextTests(textObject); + + g_object_unref(webView); +} + +static void testWebkitAtkGetTextAtOffsetTextarea() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInTextarea, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + AtkText* textObject = ATK_TEXT(object); + g_assert(ATK_IS_TEXT(textObject)); + + runGetTextTests(textObject); + + g_object_unref(webView); +} + +static void testWebkitAtkGetTextAtOffsetTextInput() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInTextInput, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + AtkText* textObject = ATK_TEXT(object); + g_assert(ATK_IS_TEXT(textObject)); + + runGetTextTests(textObject); + + g_object_unref(webView); +} + +static void testWebkitAtkGetTextInParagraphAndBodySimple() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInParagraphAndBodySimple, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + AtkObject* object1 = atk_object_ref_accessible_child(object, 0); + g_assert(object1); + AtkObject* object2 = atk_object_ref_accessible_child(object, 1); + g_assert(object2); + + AtkText* textObject1 = ATK_TEXT(object1); + g_assert(ATK_IS_TEXT(textObject1)); + AtkText* textObject2 = ATK_TEXT(object2); + g_assert(ATK_IS_TEXT(textObject2)); + + char *text = atk_text_get_text(textObject1, 0, -1); + g_assert_cmpstr(text, ==, "This is a test."); + + text = atk_text_get_text(textObject2, 0, 12); + g_assert_cmpstr(text, ==, "Hello world."); + + g_object_unref(object1); + g_object_unref(object2); + g_object_unref(webView); +} + +static void testWebkitAtkGetTextInParagraphAndBodyModerate() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInParagraphAndBodyModerate, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + /* Get to the inner AtkText object. */ + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + AtkObject* object1 = atk_object_ref_accessible_child(object, 0); + g_assert(object1); + AtkObject* object2 = atk_object_ref_accessible_child(object, 1); + g_assert(object2); + + AtkText* textObject1 = ATK_TEXT(object1); + g_assert(ATK_IS_TEXT(textObject1)); + AtkText* textObject2 = ATK_TEXT(object2); + g_assert(ATK_IS_TEXT(textObject2)); + + char *text = atk_text_get_text(textObject1, 0, -1); + g_assert_cmpstr(text, ==, "This is a test."); + + text = atk_text_get_text(textObject2, 0, 53); + g_assert_cmpstr(text, ==, "Hello world.\nThis sentence is green.\nThis one is not."); + + g_object_unref(object1); + g_object_unref(object2); + g_object_unref(webView); +} + +static void testWebkitAtkGetTextInTable() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInTable, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + object = atk_object_ref_accessible_child(object, 0); + g_assert(object); + + /* Tables should not implement AtkText. */ + g_assert(!G_TYPE_INSTANCE_GET_INTERFACE(object, ATK_TYPE_TEXT, AtkTextIface)); + + g_object_unref(object); + g_object_unref(webView); +} + +static void testWebkitAtkGetHeadersInTable() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, contentsInTableWithHeaders, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(axWebView); + + /* Check table with both column and row headers. */ + AtkObject* table = atk_object_ref_accessible_child(axWebView, 0); + g_assert(table); + g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE); + + AtkObject* colHeader = atk_table_get_column_header(ATK_TABLE(table), 0); + g_assert(colHeader); + g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(colHeader) == 0); + + colHeader = atk_table_get_column_header(ATK_TABLE(table), 1); + g_assert(colHeader); + g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(colHeader) == 1); + + colHeader = atk_table_get_column_header(ATK_TABLE(table), 2); + g_assert(colHeader); + g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(colHeader) == 2); + + colHeader = atk_table_get_column_header(ATK_TABLE(table), 3); + g_assert(colHeader); + g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(colHeader) == 2); + + AtkObject* rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0); + g_assert(rowHeader); + g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(rowHeader) == 0); + + rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1); + g_assert(rowHeader); + g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(rowHeader) == 3); + + rowHeader = atk_table_get_row_header(ATK_TABLE(table), 2); + g_assert(rowHeader); + g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(rowHeader) == 7); + + rowHeader = atk_table_get_row_header(ATK_TABLE(table), 3); + g_assert(rowHeader); + g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL); + g_assert(atk_object_get_index_in_parent(rowHeader) == 7); + + g_object_unref(table); + + /* Check table with no headers at all. */ + table = atk_object_ref_accessible_child(axWebView, 1); + g_assert(table); + g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE); + + colHeader = atk_table_get_column_header(ATK_TABLE(table), 0); + g_assert(colHeader == 0); + + colHeader = atk_table_get_column_header(ATK_TABLE(table), 1); + g_assert(colHeader == 0); + + rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0); + g_assert(rowHeader == 0); + + rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1); + g_assert(rowHeader == 0); + + g_object_unref(table); + g_object_unref(webView); +} + +static gint compAtkAttribute(AtkAttribute* a1, AtkAttribute* a2) +{ + gint strcmpVal = g_strcmp0(a1->name, a2->name); + if (strcmpVal) + return strcmpVal; + return g_strcmp0(a1->value, a2->value); +} + +static gint compAtkAttributeName(AtkAttribute* a1, AtkAttribute* a2) +{ + return g_strcmp0(a1->name, a2->name); +} + +static gboolean atkAttributeSetAttributeNameHasValue(AtkAttributeSet* set, const gchar* attributeName, const gchar* value) +{ + AtkAttribute at; + at.name = (gchar*)attributeName; + GSList* element = g_slist_find_custom(set, &at, (GCompareFunc)compAtkAttributeName); + return element && !g_strcmp0(((AtkAttribute*)(element->data))->value, value); +} + +static gboolean atkAttributeSetContainsAttributeName(AtkAttributeSet* set, const gchar* attributeName) +{ + AtkAttribute at; + at.name = (gchar*)attributeName; + return g_slist_find_custom(set, &at, (GCompareFunc)compAtkAttributeName) ? true : false; +} + +static gboolean atkAttributeSetAttributeHasValue(AtkAttributeSet* set, AtkTextAttribute attribute, const gchar* value) +{ + return atkAttributeSetAttributeNameHasValue(set, atk_text_attribute_get_name(attribute), value); +} + +static gboolean atkAttributeSetAreEqual(AtkAttributeSet* set1, AtkAttributeSet* set2) +{ + if (!set1) + return !set2; + + set1 = g_slist_sort(set1, (GCompareFunc)compAtkAttribute); + set2 = g_slist_sort(set2, (GCompareFunc)compAtkAttribute); + + while (set1) { + if (!set2 || compAtkAttribute(set1->data, set2->data)) + return FALSE; + + set1 = set1->next; + set2 = set2->next; + } + + return (!set2); +} + +static void testWebkitAtkTextAttributes() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, textWithAttributes, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkObject* child = atk_object_ref_accessible_child(object, 0); + g_assert(child && ATK_IS_TEXT(child)); + AtkText* childText = ATK_TEXT(child); + + gint startOffset; + gint endOffset; + AtkAttributeSet* set1 = atk_text_get_run_attributes(childText, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 12); + g_assert(atkAttributeSetAreEqual(set1, 0)); + + AtkAttributeSet* set2 = atk_text_get_run_attributes(childText, 15, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 12); + g_assert_cmpint(endOffset, ==, 17); + g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_STYLE, "italic")); + + AtkAttributeSet* set3 = atk_text_get_run_attributes(childText, 17, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 17); + g_assert_cmpint(endOffset, ==, 40); + g_assert(atkAttributeSetAttributeHasValue(set3, ATK_TEXT_ATTR_WEIGHT, "700")); + + AtkAttributeSet* set4 = atk_text_get_default_attributes(childText); + g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_STYLE, "normal")); + g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_JUSTIFICATION, "right")); + g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_SIZE, "14")); + atk_attribute_set_free(set1); + atk_attribute_set_free(set2); + atk_attribute_set_free(set3); + atk_attribute_set_free(set4); + + child = atk_object_ref_accessible_child(object, 1); + g_assert(child && ATK_IS_TEXT(child)); + childText = ATK_TEXT(child); + + set1 = atk_text_get_default_attributes(childText); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_FAMILY_NAME, "monospace")); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STYLE, "normal")); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STRIKETHROUGH, "false")); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_WEIGHT, "400")); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_FG_COLOR, "120,121,122")); + + set2 = atk_text_get_run_attributes(childText, 43, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 43); + g_assert_cmpint(endOffset, ==, 80); + /* Checks that default attributes of text are not returned when called to atk_text_get_run_attributes. */ + g_assert(!atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_FG_COLOR, "120,121,122")); + g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_UNDERLINE, "single")); + g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_BG_COLOR, "80,81,82")); + atk_attribute_set_free(set1); + atk_attribute_set_free(set2); + + child = atk_object_ref_accessible_child(object, 2); + g_assert(child && ATK_IS_TEXT(child)); + childText = ATK_TEXT(child); + + set1 = atk_text_get_run_attributes(childText, 0, &startOffset, &endOffset); + set2 = atk_text_get_run_attributes(childText, 3, &startOffset, &endOffset); + g_assert(atkAttributeSetAreEqual(set1, set2)); + atk_attribute_set_free(set2); + + set2 = atk_text_get_run_attributes(childText, 1, &startOffset, &endOffset); + set3 = atk_text_get_run_attributes(childText, 5, &startOffset, &endOffset); + g_assert(atkAttributeSetAreEqual(set2, set3)); + g_assert(!atkAttributeSetAreEqual(set1, set2)); + atk_attribute_set_free(set3); + + set3 = atk_text_get_run_attributes(childText, 2, &startOffset, &endOffset); + set4 = atk_text_get_run_attributes(childText, 6, &startOffset, &endOffset); + g_assert(atkAttributeSetAreEqual(set3, set4)); + g_assert(!atkAttributeSetAreEqual(set1, set3)); + g_assert(!atkAttributeSetAreEqual(set2, set3)); + atk_attribute_set_free(set1); + atk_attribute_set_free(set2); + atk_attribute_set_free(set3); + atk_attribute_set_free(set4); + + child = atk_object_ref_accessible_child(object, 3); + g_assert(child && ATK_IS_TEXT(child)); + childText = ATK_TEXT(child); + set1 = atk_text_get_run_attributes(childText, 24, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 21); + g_assert_cmpint(endOffset, ==, 25); + g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STRIKETHROUGH, "true")); + + set2 = atk_text_get_run_attributes(childText, 25, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 25); + g_assert_cmpint(endOffset, ==, 30); + g_assert(atkAttributeSetAreEqual(set2, 0)); + + set3 = atk_text_get_default_attributes(childText); + g_assert(atkAttributeSetAttributeHasValue(set3, ATK_TEXT_ATTR_JUSTIFICATION, "center")); + atk_attribute_set_free(set1); + atk_attribute_set_free(set2); + atk_attribute_set_free(set3); +} + +static void testWebkitAtkTextSelections() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, textForSelections, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkText* paragraph1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0)); + g_assert(ATK_IS_TEXT(paragraph1)); + AtkText* paragraph2 = ATK_TEXT(atk_object_ref_accessible_child(object, 1)); + g_assert(ATK_IS_TEXT(paragraph2)); + AtkText* link = ATK_TEXT(atk_object_ref_accessible_child(ATK_OBJECT(paragraph2), 0)); + g_assert(ATK_IS_TEXT(link)); + + /* First paragraph (simple text). */ + + /* Basic initial checks. */ + g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 0); + + gint startOffset; + gint endOffset; + gchar* selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 0); + g_assert_cmpstr(selectedText, ==, 0); + g_free (selectedText); + + /* Try removing a non existing (yet) selection. */ + gboolean result = atk_text_remove_selection(paragraph1, 0); + g_assert(!result); + + /* Try setting a 0-char selection. */ + result = atk_text_set_selection(paragraph1, 0, 5, 5); + g_assert(result); + + /* Make a selection and test it. */ + result = atk_text_set_selection(paragraph1, 0, 5, 25); + g_assert(result); + g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 1); + selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 5); + g_assert_cmpint(endOffset, ==, 25); + g_assert_cmpstr(selectedText, ==, "agraph with plain te"); + g_free (selectedText); + /* Try removing the selection from other AtkText object (should fail). */ + result = atk_text_remove_selection(paragraph2, 0); + g_assert(!result); + + /* Remove the selection and test everything again. */ + result = atk_text_remove_selection(paragraph1, 0); + g_assert(result); + g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 0); + selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset); + /* Now offsets should be the same, set to the last position of the caret. */ + g_assert_cmpint(startOffset, ==, endOffset); + g_assert_cmpint(startOffset, ==, 25); + g_assert_cmpint(endOffset, ==, 25); + g_assert_cmpstr(selectedText, ==, 0); + g_free (selectedText); + + /* Second paragraph (text + link + text). */ + + /* Set a selection partially covering the link and test it. */ + result = atk_text_set_selection(paragraph2, 0, 7, 21); + g_assert(result); + + /* Test the paragraph first. */ + g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 1); + selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 7); + g_assert_cmpint(endOffset, ==, 21); + g_assert_cmpstr(selectedText, ==, "raph with a li"); + g_free (selectedText); + + /* Now test just the link. */ + g_assert_cmpint(atk_text_get_n_selections(link), ==, 1); + selectedText = atk_text_get_selection(link, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 4); + g_assert_cmpstr(selectedText, ==, "a li"); + g_free (selectedText); + + /* Make a selection after the link and check selection for the whole paragraph. */ + result = atk_text_set_selection(paragraph2, 0, 27, 37); + g_assert(result); + g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 1); + selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset); + g_assert_cmpint(startOffset, ==, 27); + g_assert_cmpint(endOffset, ==, 37); + g_assert_cmpstr(selectedText, ==, "the middle"); + g_free (selectedText); + + /* Remove selections and text everything again. */ + result = atk_text_remove_selection(paragraph2, 0); + g_assert(result); + g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 0); + selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset); + /* Now offsets should be the same (no selection). */ + g_assert_cmpint(startOffset, ==, endOffset); + g_assert_cmpstr(selectedText, ==, 0); + g_free (selectedText); + + g_assert_cmpint(atk_text_get_n_selections(link), ==, 0); + selectedText = atk_text_get_selection(link, 0, &startOffset, &endOffset); + /* Now offsets should be the same (no selection). */ + g_assert_cmpint(startOffset, ==, endOffset); + g_assert_cmpstr(selectedText, ==, 0); + g_free (selectedText); + + g_object_unref(paragraph1); + g_object_unref(paragraph2); + g_object_unref(webView); +} + +static void testWebkitAtkGetExtents() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, centeredContents, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkText* shortText1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0)); + g_assert(ATK_IS_TEXT(shortText1)); + AtkText* longText = ATK_TEXT(atk_object_ref_accessible_child(object, 1)); + g_assert(ATK_IS_TEXT(longText)); + AtkText* shortText2 = ATK_TEXT(atk_object_ref_accessible_child(object, 2)); + g_assert(ATK_IS_TEXT(shortText2)); + AtkText* multilineText = ATK_TEXT(atk_object_ref_accessible_child(object, 3)); + g_assert(ATK_IS_TEXT(multilineText)); + + /* Start with window extents. */ + AtkTextRectangle sline_window1, sline_window2, lline_window, mline_window; + atk_text_get_range_extents(shortText1, 0, 10, ATK_XY_WINDOW, &sline_window1); + atk_text_get_range_extents(longText, 0, 44, ATK_XY_WINDOW, &lline_window); + atk_text_get_range_extents(shortText2, 0, 10, ATK_XY_WINDOW, &sline_window2); + atk_text_get_range_extents(multilineText, 0, 60, ATK_XY_WINDOW, &mline_window); + + /* Check vertical line position. */ + g_assert_cmpint(sline_window1.y + sline_window1.height, <=, lline_window.y); + g_assert_cmpint(lline_window.y + lline_window.height + sline_window2.height, <=, mline_window.y); + + /* Paragraphs 1 and 3 have identical text and alignment. */ + g_assert_cmpint(sline_window1.x, ==, sline_window2.x); + g_assert_cmpint(sline_window1.width, ==, sline_window2.width); + g_assert_cmpint(sline_window1.height, ==, sline_window2.height); + + /* All lines should be the same height; line 2 is the widest line. */ + g_assert_cmpint(sline_window1.height, ==, lline_window.height); + g_assert_cmpint(sline_window1.width, <, lline_window.width); + + /* Make sure the character extents jive with the range extents. */ + gint x; + gint y; + gint width; + gint height; + + /* First paragraph (short text). */ + atk_text_get_character_extents(shortText1, 0, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, sline_window1.x); + g_assert_cmpint(y, ==, sline_window1.y); + g_assert_cmpint(height, ==, sline_window1.height); + + atk_text_get_character_extents(shortText1, 9, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, sline_window1.x + sline_window1.width - width); + g_assert_cmpint(y, ==, sline_window1.y); + g_assert_cmpint(height, ==, sline_window1.height); + + /* Second paragraph (long text). */ + atk_text_get_character_extents(longText, 0, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, lline_window.x); + g_assert_cmpint(y, ==, lline_window.y); + g_assert_cmpint(height, ==, lline_window.height); + + atk_text_get_character_extents(longText, 43, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, lline_window.x + lline_window.width - width); + g_assert_cmpint(y, ==, lline_window.y); + g_assert_cmpint(height, ==, lline_window.height); + + /* Third paragraph (short text). */ + atk_text_get_character_extents(shortText2, 0, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, sline_window2.x); + g_assert_cmpint(y, ==, sline_window2.y); + g_assert_cmpint(height, ==, sline_window2.height); + + atk_text_get_character_extents(shortText2, 9, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, sline_window2.x + sline_window2.width - width); + g_assert_cmpint(y, ==, sline_window2.y); + g_assert_cmpint(height, ==, sline_window2.height); + + /* Four paragraph (3 lines multi-line text). */ + atk_text_get_character_extents(multilineText, 0, &x, &y, &width, &height, ATK_XY_WINDOW); + g_assert_cmpint(x, ==, mline_window.x); + g_assert_cmpint(y, ==, mline_window.y); + g_assert_cmpint(3 * height, ==, mline_window.height); + + atk_text_get_character_extents(multilineText, 59, &x, &y, &width, &height, ATK_XY_WINDOW); + /* Last line won't fill the whole width of the rectangle. */ + g_assert_cmpint(x, <=, mline_window.x + mline_window.width - width); + g_assert_cmpint(y, ==, mline_window.y + mline_window.height - height); + g_assert_cmpint(height, <=, mline_window.height); + + g_object_unref(shortText1); + g_object_unref(shortText2); + g_object_unref(longText); + g_object_unref(multilineText); + g_object_unref(webView); +} + +static void testWebkitAtkLayoutAndDataTables() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, layoutAndDataTables, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + /* Check the non-layout table (data table). */ + + AtkObject* table1 = atk_object_ref_accessible_child(object, 0); + g_assert(ATK_IS_TABLE(table1)); + AtkAttributeSet* set1 = atk_object_get_attributes(table1); + g_assert(set1); + g_assert(!atkAttributeSetContainsAttributeName(set1, "layout-guess")); + atk_attribute_set_free(set1); + + /* Check the layout table. */ + + AtkObject* table2 = atk_object_ref_accessible_child(object, 1); + g_assert(ATK_IS_TABLE(table2)); + AtkAttributeSet* set2 = atk_object_get_attributes(table2); + g_assert(set2); + g_assert(atkAttributeSetContainsAttributeName(set2, "layout-guess")); + g_assert(atkAttributeSetAttributeNameHasValue(set2, "layout-guess", "true")); + atk_attribute_set_free(set2); + + g_object_unref(table1); + g_object_unref(table2); + g_object_unref(webView); +} + +static void testWebkitAtkLinksWithInlineImages() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, linksWithInlineImages, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + /* First paragraph (link at the beginning). */ + AtkObject* paragraph = atk_object_ref_accessible_child(object, 0); + g_assert(ATK_IS_TEXT(paragraph)); + gint startOffset; + gint endOffset; + gchar* text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset); + g_assert(text); + g_assert_cmpstr(text, ==, "foo bar baz"); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 11); + g_free(text); + g_object_unref(paragraph); + + /* Second paragraph (link in the middle). */ + paragraph = atk_object_ref_accessible_child(object, 1); + g_assert(ATK_IS_TEXT(paragraph)); + text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset); + g_assert(text); + g_assert_cmpstr(text, ==, "foo bar baz"); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 11); + g_free(text); + g_object_unref(paragraph); + + /* Third paragraph (link at the end). */ + paragraph = atk_object_ref_accessible_child(object, 2); + g_assert(ATK_IS_TEXT(paragraph)); + text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset); + g_assert(text); + g_assert_cmpstr(text, ==, "foo bar baz"); + g_assert_cmpint(startOffset, ==, 0); + g_assert_cmpint(endOffset, ==, 11); + g_free(text); + g_object_unref(paragraph); + + g_object_unref(webView); +} + +static void testWebkitAtkHypertextAndHyperlinks() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, hypertextAndHyperlinks, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkObject* paragraph1 = atk_object_ref_accessible_child(object, 0); + g_assert(ATK_OBJECT(paragraph1)); + g_assert(atk_object_get_role(paragraph1) == ATK_ROLE_PARAGRAPH); + g_assert(ATK_IS_HYPERTEXT(paragraph1)); + + /* No links in the first paragraph. */ + gint nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph1)); + g_assert_cmpint(nLinks, ==, 0); + + AtkObject* paragraph2 = atk_object_ref_accessible_child(object, 1); + g_assert(ATK_OBJECT(paragraph2)); + g_assert(atk_object_get_role(paragraph2) == ATK_ROLE_PARAGRAPH); + g_assert(ATK_IS_HYPERTEXT(paragraph2)); + + /* Check links in the second paragraph. + nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph2)); + g_assert_cmpint(nLinks, ==, 3); */ + + AtkHyperlink* hLink1 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 0); + g_assert(ATK_HYPERLINK(hLink1)); + AtkObject* hLinkObject1 = atk_hyperlink_get_object(hLink1, 0); + g_assert(ATK_OBJECT(hLinkObject1)); + g_assert(atk_object_get_role(hLinkObject1) == ATK_ROLE_LINK); + g_assert_cmpint(atk_hyperlink_get_start_index(hLink1), ==, 0); + g_assert_cmpint(atk_hyperlink_get_end_index(hLink1), ==, 6); + g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink1), ==, 1); + g_assert_cmpstr(atk_hyperlink_get_uri(hLink1, 0), ==, "http://foo.bar.baz/"); + + AtkHyperlink* hLink2 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 1); + g_assert(ATK_HYPERLINK(hLink2)); + AtkObject* hLinkObject2 = atk_hyperlink_get_object(hLink2, 0); + g_assert(ATK_OBJECT(hLinkObject2)); + g_assert(atk_object_get_role(hLinkObject2) == ATK_ROLE_LINK); + g_assert_cmpint(atk_hyperlink_get_start_index(hLink2), ==, 12); + g_assert_cmpint(atk_hyperlink_get_end_index(hLink2), ==, 32); + g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink2), ==, 1); + g_assert_cmpstr(atk_hyperlink_get_uri(hLink2, 0), ==, "http://bar.baz.foo/"); + + AtkHyperlink* hLink3 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 2); + g_assert(ATK_HYPERLINK(hLink3)); + AtkObject* hLinkObject3 = atk_hyperlink_get_object(hLink3, 0); + g_assert(ATK_OBJECT(hLinkObject3)); + g_assert(atk_object_get_role(hLinkObject3) == ATK_ROLE_LINK); + g_assert_cmpint(atk_hyperlink_get_start_index(hLink3), ==, 65); + g_assert_cmpint(atk_hyperlink_get_end_index(hLink3), ==, 75); + g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink3), ==, 1); + g_assert_cmpstr(atk_hyperlink_get_uri(hLink3, 0), ==, "http://baz.foo.bar/"); + + /* Finally check the AtkAction interface for a given AtkHyperlink. */ + g_assert(ATK_IS_ACTION(hLink1)); + g_assert_cmpint(atk_action_get_n_actions(ATK_ACTION(hLink1)), ==, 1); + g_assert_cmpstr(atk_action_get_keybinding(ATK_ACTION(hLink1), 0), ==, ""); + g_assert_cmpstr(atk_action_get_name(ATK_ACTION(hLink1), 0), ==, "jump"); + g_assert(atk_action_do_action(ATK_ACTION(hLink1), 0)); + + g_object_unref(paragraph1); + g_object_unref(paragraph2); + g_object_unref(webView); +} + +static void testWebkitAtkListsOfItems() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, listsOfItems, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + /* Unordered list. */ + + AtkObject* uList = atk_object_ref_accessible_child(object, 0); + g_assert(ATK_OBJECT(uList)); + g_assert(atk_object_get_role(uList) == ATK_ROLE_LIST); + g_assert_cmpint(atk_object_get_n_accessible_children(uList), ==, 3); + + AtkObject* item1 = atk_object_ref_accessible_child(uList, 0); + g_assert(ATK_IS_TEXT(item1)); + AtkObject* item2 = atk_object_ref_accessible_child(uList, 1); + g_assert(ATK_IS_TEXT(item2)); + AtkObject* item3 = atk_object_ref_accessible_child(uList, 2); + g_assert(ATK_IS_TEXT(item3)); + + g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0); + g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1); + g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1); + + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item1), 0, -1), ==, "\342\200\242 text only"); + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item2), 0, -1), ==, "\342\200\242 link only"); + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, "\342\200\242 text and a link"); + + g_object_unref(item1); + g_object_unref(item2); + g_object_unref(item3); + + /* Ordered list. */ + + AtkObject* oList = atk_object_ref_accessible_child(object, 1); + g_assert(ATK_OBJECT(oList)); + g_assert(atk_object_get_role(oList) == ATK_ROLE_LIST); + g_assert_cmpint(atk_object_get_n_accessible_children(oList), ==, 3); + + item1 = atk_object_ref_accessible_child(oList, 0); + g_assert(ATK_IS_TEXT(item1)); + item2 = atk_object_ref_accessible_child(oList, 1); + g_assert(ATK_IS_TEXT(item2)); + item3 = atk_object_ref_accessible_child(oList, 2); + g_assert(ATK_IS_TEXT(item3)); + + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item1), 0, -1), ==, "1. text only"); + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item2), 0, -1), ==, "2. link only"); + g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, "3. text and a link"); + + g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0); + g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1); + g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1); + + g_object_unref(item1); + g_object_unref(item2); + g_object_unref(item3); + + g_object_unref(uList); + g_object_unref(oList); + g_object_unref(webView); +} + +static gboolean textInserted = FALSE; +static gboolean textDeleted = FALSE; + +static void textChangedCb(AtkText* text, gint pos, gint len, const gchar* detail) +{ + g_assert(text && ATK_IS_OBJECT(text)); + + if (!g_strcmp0(detail, "insert")) + textInserted = TRUE; + else if (!g_strcmp0(detail, "delete")) + textDeleted = TRUE; +} + +static gboolean checkTextChanges(gpointer unused) +{ + g_assert_cmpint(textInserted, ==, TRUE); + g_assert_cmpint(textDeleted, ==, TRUE); + return FALSE; +} + +static void testWebkitAtkTextChangedNotifications() +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + GtkAllocation allocation = { 0, 0, 800, 600 }; + gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation); + webkit_web_view_load_string(webView, formWithTextInputs, 0, 0, 0); + + /* Wait for the accessible objects to be created. */ + waitForAccessibleObjects(); + + AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView)); + g_assert(object); + + AtkObject* form = atk_object_ref_accessible_child(object, 0); + g_assert(ATK_IS_OBJECT(form)); + + AtkObject* textEntry = atk_object_ref_accessible_child(form, 0); + g_assert(ATK_IS_EDITABLE_TEXT(textEntry)); + g_assert(atk_object_get_role(ATK_OBJECT(textEntry)) == ATK_ROLE_ENTRY); + + g_signal_connect(textEntry, "text-changed::insert", + G_CALLBACK(textChangedCb), + (gpointer)"insert"); + g_signal_connect(textEntry, "text-changed::delete", + G_CALLBACK(textChangedCb), + (gpointer)"delete"); + + gint pos = 0; + atk_editable_text_insert_text(ATK_EDITABLE_TEXT(textEntry), "foo bar baz", 11, &pos); + atk_editable_text_delete_text(ATK_EDITABLE_TEXT(textEntry), 4, 7); + textInserted = FALSE; + textDeleted = FALSE; + + g_idle_add((GSourceFunc)checkTextChanges, 0); + + g_object_unref(form); + g_object_unref(textEntry); + g_object_unref(webView); +} + +int main(int argc, char** argv) +{ + g_thread_init(0); + gtk_test_init(&argc, &argv, 0); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/atk/comboBox", testWebkitAtkComboBox); + g_test_add_func("/webkit/atk/getTextAtOffset", testWebkitAtkGetTextAtOffset); + g_test_add_func("/webkit/atk/getTextAtOffsetForms", testWebkitAtkGetTextAtOffsetForms); + g_test_add_func("/webkit/atk/getTextAtOffsetNewlines", testWebkitAtkGetTextAtOffsetNewlines); + g_test_add_func("/webkit/atk/getTextAtOffsetTextarea", testWebkitAtkGetTextAtOffsetTextarea); + g_test_add_func("/webkit/atk/getTextAtOffsetTextInput", testWebkitAtkGetTextAtOffsetTextInput); + g_test_add_func("/webkit/atk/getTextInParagraphAndBodySimple", testWebkitAtkGetTextInParagraphAndBodySimple); + g_test_add_func("/webkit/atk/getTextInParagraphAndBodyModerate", testWebkitAtkGetTextInParagraphAndBodyModerate); + g_test_add_func("/webkit/atk/getTextInTable", testWebkitAtkGetTextInTable); + g_test_add_func("/webkit/atk/getHeadersInTable", testWebkitAtkGetHeadersInTable); + g_test_add_func("/webkit/atk/textAttributes", testWebkitAtkTextAttributes); + g_test_add_func("/webkit/atk/textSelections", testWebkitAtkTextSelections); + g_test_add_func("/webkit/atk/getExtents", testWebkitAtkGetExtents); + g_test_add_func("/webkit/atk/hypertextAndHyperlinks", testWebkitAtkHypertextAndHyperlinks); + g_test_add_func("/webkit/atk/layoutAndDataTables", testWebkitAtkLayoutAndDataTables); + g_test_add_func("/webkit/atk/linksWithInlineImages", testWebkitAtkLinksWithInlineImages); + g_test_add_func("/webkit/atk/listsOfItems", testWebkitAtkListsOfItems); + g_test_add_func("/webkit/atk/textChangedNotifications", testWebkitAtkTextChangedNotifications); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testatkroles.c b/Source/WebKit/gtk/tests/testatkroles.c new file mode 100644 index 0000000..5ad6b5f --- /dev/null +++ b/Source/WebKit/gtk/tests/testatkroles.c @@ -0,0 +1,428 @@ +/* + * Copyright © 2010 Joanmarie Diggs + * Copyright © 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +/* Non form roles */ +#define HTML_DOCUMENT_FRAME "<html><body>This is a test.</body></html>" +#define HTML_HEADING "<html><body><h1>1</h1><h2>2</h2><h3>3</h3><h4>4</h4><h5>5</h5><h6>6</h6></body></html>" +#define HTML_IMAGE "<html><body><img src='foobar.png' alt='This is a test.'/></body></html>" +#define HTML_LINK_TEXT "<html><body><a href='foobar.html'>This is a test.</a></body></html>" +#define HTML_LIST "<html><body><ul><li>1</li><li>2</li></ul><ol><li>1</li><li>2</li></ol></body></html>" +#define HTML_PARAGRAPH "<html><body><p>This is a test.</p></body></html>" +#define HTML_SECTION "<html><body><div>This is a test.</div></body></html>" +#define HTML_TABLE "<html><body><table border='1'><tr><td>This is</td><td>a test.</td></tr></table></body></html>" +#define HTML_SEPARATOR "<html><body><hr/></body></html>" +#define HTML_COMBOBOX "<html><body><select size='1'><option>one</option><option>two</option><option>three</option></select></body></html>" +/* Form roles */ +#define HTML_FORM "<html><body><form>This is a test.</form></body></html>" +#define HTML_CHECK_BOX "<html><body><input type='checkbox' />This is a test.</body></html>" +#define HTML_LABELED_ENTRY "<html><body><label for='foo'>Name:</label><input type='text' id='foo' /></body></html>" +#define HTML_LISTBOX "<html><body><select size='3'><option>one</option><option>two</option><option>three</option></select></body></html>" +#define HTML_PASSWORD_TEXT "<html><body><input type='password' /></body></html>" +#define HTML_PUSH_BUTTON "<html><body><input type='submit' value='ok' />This is a test.</body></html>" +#define HTML_RADIO_BUTTON "<html><body><input type='radio' />This is a test.</body></html>" + +typedef struct { + AtkObject* documentFrame; + AtkObject* obj; + AtkRole role; + GtkWidget* webView; + GtkAllocation alloc; + GMainLoop* loop; +} AtkRolesFixture; + +static gboolean finish_loading(AtkRolesFixture* fixture) +{ + if (g_main_loop_is_running(fixture->loop)) + g_main_loop_quit(fixture->loop); + + fixture->documentFrame = gtk_widget_get_accessible(fixture->webView); + g_assert(fixture->documentFrame); + + return FALSE; +} + +static void atk_roles_fixture_setup(AtkRolesFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + fixture->alloc = (GtkAllocation) { 0, 0, 800, 600 }; + fixture->webView = webkit_web_view_new(); + g_object_ref_sink(fixture->webView); + + gtk_widget_size_allocate(fixture->webView, &fixture->alloc); + + if (data != NULL) + webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*) data, NULL, NULL, NULL); + + g_idle_add((GSourceFunc) finish_loading, fixture); + g_main_loop_run(fixture->loop); +} + +static void atk_roles_fixture_teardown(AtkRolesFixture* fixture, gconstpointer data) +{ + g_object_unref(fixture->webView); + g_main_loop_unref(fixture->loop); +} + +static void get_child_and_test_role(AtkObject* obj, gint pos, AtkRole role) +{ + AtkObject* child; + AtkRole child_role; + + child = atk_object_ref_accessible_child(obj, pos); + g_assert(child); + child_role = atk_object_get_role(child); + g_assert(child_role == role); + + g_object_unref(child); +} + +static void test_webkit_atk_get_role_document_frame(AtkRolesFixture* fixture, gconstpointer data) +{ + fixture->role = atk_object_get_role(fixture->documentFrame); + g_assert(fixture->role == ATK_ROLE_DOCUMENT_FRAME); +} + +static void test_webkit_atk_get_role_heading(AtkRolesFixture* fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_HEADING); + get_child_and_test_role(fixture->documentFrame, 1, ATK_ROLE_HEADING); + get_child_and_test_role(fixture->documentFrame, 2, ATK_ROLE_HEADING); + get_child_and_test_role(fixture->documentFrame, 3, ATK_ROLE_HEADING); + get_child_and_test_role(fixture->documentFrame, 4, ATK_ROLE_HEADING); + get_child_and_test_role(fixture->documentFrame, 5, ATK_ROLE_HEADING); +} + +static void test_webkit_atk_get_role_image(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_IMAGE); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_link(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_LINK); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_list_and_item(AtkRolesFixture* fixture, gconstpointer data) +{ + AtkObject* listObj; + + listObj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(listObj); + fixture->role = atk_object_get_role(listObj); + g_assert(fixture->role == ATK_ROLE_LIST); + + get_child_and_test_role(listObj, 0, ATK_ROLE_LIST_ITEM); + get_child_and_test_role(listObj, 1, ATK_ROLE_LIST_ITEM); + g_object_unref(listObj); + + listObj = atk_object_ref_accessible_child(fixture->documentFrame, 1); + g_assert(listObj); + fixture->role = atk_object_get_role(listObj); + g_assert(fixture->role == ATK_ROLE_LIST); + + get_child_and_test_role(listObj, 0, ATK_ROLE_LIST_ITEM); + get_child_and_test_role(listObj, 1, ATK_ROLE_LIST_ITEM); + g_object_unref(listObj); +} + +static void test_webkit_atk_get_role_paragraph(AtkRolesFixture* fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_PARAGRAPH); +} + +static void test_webkit_atk_get_role_section(AtkRolesFixture* fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_SECTION); +} + +// Does not yet test table cells because of bug 30895. +static void test_webkit_atk_get_role_table(AtkRolesFixture* fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_TABLE); +} + +static void test_webkit_atk_get_role_separator(AtkRolesFixture *fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_SEPARATOR); +} + +static void test_webkit_atk_get_role_combobox(AtkRolesFixture *fixture, gconstpointer data) +{ + AtkObject* comboboxMenu; + + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0); + g_assert(fixture->obj); + fixture->role = atk_object_get_role(fixture->obj); + g_assert(fixture->role == ATK_ROLE_COMBO_BOX); + + comboboxMenu = atk_object_ref_accessible_child(fixture->obj, 0); + g_assert(comboboxMenu); + fixture->role = atk_object_get_role(comboboxMenu); + g_assert(fixture->role == ATK_ROLE_MENU); + + get_child_and_test_role(comboboxMenu, 0, ATK_ROLE_MENU_ITEM); + get_child_and_test_role(comboboxMenu, 1, ATK_ROLE_MENU_ITEM); + get_child_and_test_role(comboboxMenu, 2, ATK_ROLE_MENU_ITEM); + + g_object_unref(fixture->obj); + g_object_unref(comboboxMenu); +} + +/* Form roles */ +static void test_webkit_atk_get_role_form(AtkRolesFixture *fixture, gconstpointer data) +{ + get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_FORM); +} + +static void test_webkit_atk_get_role_check_box(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_CHECK_BOX); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_entry(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 1, ATK_ROLE_ENTRY); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_label(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_LABEL); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_listbox(AtkRolesFixture* fixture, gconstpointer data) +{ + AtkObject* listboxObj; + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + listboxObj = atk_object_ref_accessible_child(fixture->obj, 0); + g_assert(listboxObj); + fixture->role = atk_object_get_role(listboxObj); + g_assert(fixture->role == ATK_ROLE_LIST); + + get_child_and_test_role(listboxObj, 0, ATK_ROLE_LIST_ITEM); + get_child_and_test_role(listboxObj, 1, ATK_ROLE_LIST_ITEM); + get_child_and_test_role(listboxObj, 2, ATK_ROLE_LIST_ITEM); + + g_object_unref(fixture->obj); + g_object_unref(listboxObj); +} + +static void test_webkit_atk_get_role_password_text(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_PASSWORD_TEXT); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_push_button(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_PUSH_BUTTON); + + g_object_unref(fixture->obj); +} + +static void test_webkit_atk_get_role_radio_button(AtkRolesFixture* fixture, gconstpointer data) +{ + // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of. + fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0); + g_assert(fixture->obj); + + get_child_and_test_role(fixture->obj, 0, ATK_ROLE_RADIO_BUTTON); + + g_object_unref(fixture->obj); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_document_frame", + AtkRolesFixture, HTML_DOCUMENT_FRAME, + atk_roles_fixture_setup, + test_webkit_atk_get_role_document_frame, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_heading", + AtkRolesFixture, HTML_HEADING, + atk_roles_fixture_setup, + test_webkit_atk_get_role_heading, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_image", + AtkRolesFixture, HTML_IMAGE, + atk_roles_fixture_setup, + test_webkit_atk_get_role_image, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_link", + AtkRolesFixture, HTML_LINK_TEXT, + atk_roles_fixture_setup, + test_webkit_atk_get_role_link, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_list_and_item", + AtkRolesFixture, HTML_LIST, + atk_roles_fixture_setup, + test_webkit_atk_get_role_list_and_item, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_paragraph", + AtkRolesFixture, HTML_PARAGRAPH, + atk_roles_fixture_setup, + test_webkit_atk_get_role_paragraph, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_section", + AtkRolesFixture, HTML_SECTION, + atk_roles_fixture_setup, + test_webkit_atk_get_role_section, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_table", + AtkRolesFixture, HTML_TABLE, + atk_roles_fixture_setup, + test_webkit_atk_get_role_table, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_separator", + AtkRolesFixture, HTML_SEPARATOR, + atk_roles_fixture_setup, + test_webkit_atk_get_role_separator, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_combobox", + AtkRolesFixture, HTML_COMBOBOX, + atk_roles_fixture_setup, + test_webkit_atk_get_role_combobox, + atk_roles_fixture_teardown); + + /* Form roles */ + g_test_add("/webkit/atk/test_webkit_atk_get_role_form", + AtkRolesFixture, HTML_FORM, + atk_roles_fixture_setup, + test_webkit_atk_get_role_form, + atk_roles_fixture_teardown); + g_test_add("/webkit/atk/test_webkit_atk_get_role_check_box", + AtkRolesFixture, HTML_CHECK_BOX, + atk_roles_fixture_setup, + test_webkit_atk_get_role_check_box, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_entry", + AtkRolesFixture, HTML_LABELED_ENTRY, + atk_roles_fixture_setup, + test_webkit_atk_get_role_entry, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_label", + AtkRolesFixture, HTML_LABELED_ENTRY, + atk_roles_fixture_setup, + test_webkit_atk_get_role_label, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_listbox", + AtkRolesFixture, HTML_LISTBOX, + atk_roles_fixture_setup, + test_webkit_atk_get_role_listbox, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_password_text", + AtkRolesFixture, HTML_PASSWORD_TEXT, + atk_roles_fixture_setup, + test_webkit_atk_get_role_password_text, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_push_button", + AtkRolesFixture, HTML_PUSH_BUTTON, + atk_roles_fixture_setup, + test_webkit_atk_get_role_push_button, + atk_roles_fixture_teardown); + + g_test_add("/webkit/atk/test_webkit_atk_get_role_radio_button", + AtkRolesFixture, HTML_RADIO_BUTTON, + atk_roles_fixture_setup, + test_webkit_atk_get_role_radio_button, + atk_roles_fixture_teardown); + + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testcopyandpaste.c b/Source/WebKit/gtk/tests/testcopyandpaste.c new file mode 100644 index 0000000..1b5fb7b --- /dev/null +++ b/Source/WebKit/gtk/tests/testcopyandpaste.c @@ -0,0 +1,276 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <string.h> +#include <glib/gstdio.h> +#include <webkit/webkit.h> +#include <JavaScriptCore/JSStringRef.h> +#include <JavaScriptCore/JSContextRef.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +typedef struct { + char* page; + char* expectedContent; +} TestInfo; + +typedef struct { + GtkWidget* window; + WebKitWebView* webView; + GMainLoop* loop; + TestInfo* info; +} CopyAndPasteFixture; + +TestInfo* +test_info_new(const char* page, const char* expectedContent) +{ + TestInfo* info; + info = g_slice_new0(TestInfo); + info->page = g_strdup(page); + if (expectedContent) + info->expectedContent = g_strdup(expectedContent); + return info; +} + +void +test_info_destroy(TestInfo* info) +{ + g_free(info->page); + g_free(info->expectedContent); + g_slice_free(TestInfo, info); +} + +static void copy_and_paste_fixture_setup(CopyAndPasteFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + + fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + + gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView)); +} + +static void copy_and_paste_fixture_teardown(CopyAndPasteFixture* fixture, gconstpointer data) +{ + gtk_widget_destroy(fixture->window); + g_main_loop_unref(fixture->loop); + test_info_destroy(fixture->info); +} + +static void load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) +{ + CopyAndPasteFixture* fixture = (CopyAndPasteFixture*)data; + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status != WEBKIT_LOAD_FINISHED) + return; + + GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + gtk_clipboard_clear(clipboard); + + webkit_web_view_copy_clipboard(webView); + + gchar* text = gtk_clipboard_wait_for_text(clipboard); + g_assert(text || !fixture->info->expectedContent); + g_assert(!text || !strcmp(text, fixture->info->expectedContent)); + g_free(text); + + // Verify that the markup starts with the proper content-type meta tag prefix. + GtkSelectionData* selectionData = gtk_clipboard_wait_for_contents(clipboard, gdk_atom_intern("text/html", FALSE)); + if (selectionData) { + static const char* markupPrefix = "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"; + char* markup = g_strndup((const char*) gtk_selection_data_get_data(selectionData), + gtk_selection_data_get_length(selectionData)); + g_assert(strlen(markupPrefix) <= strlen(markup)); + g_assert(!strncmp(markupPrefix, markup, strlen(markupPrefix))); + g_free(markup); + } + + g_assert(!gtk_clipboard_wait_is_uris_available(clipboard)); + g_assert(!gtk_clipboard_wait_is_image_available(clipboard)); + + g_main_loop_quit(fixture->loop); +} + +gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data) +{ + gtk_widget_grab_focus(widget); + CopyAndPasteFixture* fixture = (CopyAndPasteFixture*)data; + webkit_web_view_load_string(fixture->webView, fixture->info->page, + "text/html", "utf-8", "file://"); + return FALSE; +} + +static void test_copy_and_paste(CopyAndPasteFixture* fixture, gconstpointer data) +{ + fixture->info = (TestInfo*)data; + g_signal_connect(fixture->window, "map-event", + G_CALLBACK(map_event_cb), fixture); + + gtk_widget_show(fixture->window); + gtk_widget_show(GTK_WIDGET(fixture->webView)); + gtk_window_present(GTK_WINDOW(fixture->window)); + + g_signal_connect(fixture->webView, "notify::load-status", + G_CALLBACK(load_status_cb), fixture); + + g_main_loop_run(fixture->loop); +} + +static CopyAndPasteFixture* currentFixture; +static JSValueRef runPasteTestCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Simulate a paste keyboard sequence. + GdkEvent* event = gdk_event_new(GDK_KEY_PRESS); + event->key.keyval = gdk_unicode_to_keyval('v'); + event->key.state = GDK_CONTROL_MASK; + event->key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView)); + g_object_ref(event->key.window); +#ifndef GTK_API_VERSION_2 + GdkDeviceManager* manager = gdk_display_get_device_manager(gdk_window_get_display(event->key.window)); + gdk_event_set_device(event, gdk_device_manager_get_client_pointer(manager)); +#endif + + GdkKeymapKey* keys; + gint n_keys; + if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event->key.keyval, &keys, &n_keys)) { + event->key.hardware_keycode = keys[0].keycode; + g_free(keys); + } + + gtk_main_do_event(event); + event->key.type = GDK_KEY_RELEASE; + gtk_main_do_event(event); + gdk_event_free(event); + + JSStringRef scriptString = JSStringCreateWithUTF8CString("document.body.innerHTML;"); + JSValueRef value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0); + JSStringRelease(scriptString); + + g_assert(JSValueIsString(context, value)); + JSStringRef actual = JSValueToStringCopy(context, value, exception); + g_assert(!exception || !*exception); + g_assert(currentFixture->info->expectedContent); + JSStringRef expected = JSStringCreateWithUTF8CString(currentFixture->info->expectedContent); + g_assert(JSStringIsEqual(expected, actual)); + + JSStringRelease(expected); + JSStringRelease(actual); + g_main_loop_quit(currentFixture->loop); + return JSValueMakeUndefined(context); +} + +static void window_object_cleared_callback(WebKitWebView* web_view, WebKitWebFrame* web_frame, JSGlobalContextRef context, JSObjectRef window_object, gpointer data) +{ + JSStringRef name = JSStringCreateWithUTF8CString("runTest"); + JSObjectRef testComplete = JSObjectMakeFunctionWithCallback(context, name, runPasteTestCallback); + JSObjectSetProperty(context, window_object, name, testComplete, kJSPropertyAttributeNone, 0); + JSStringRelease(name); +} + +static void pasting_test_get_data_callback(GtkClipboard* clipboard, GtkSelectionData* selection_data, guint info, gpointer data) +{ + gtk_selection_data_set(selection_data, gdk_atom_intern("text/html", FALSE), 8, (const guchar*) data, strlen((char*)data) + 1); +} + +static void pasting_test_clear_data_callback(GtkClipboard* clipboard, gpointer data) +{ + g_free(data); +} + +static void test_pasting_markup(CopyAndPasteFixture* fixture, gconstpointer data) +{ + fixture->info = (TestInfo*)data; + currentFixture = fixture; + + GtkTargetList* targetList = gtk_target_list_new(0, 0); + gtk_target_list_add(targetList, gdk_atom_intern("text/html", FALSE), 0, 0); + + int numberOfTargets = 1; + GtkTargetEntry* targetTable = gtk_target_table_new_from_list(targetList, &numberOfTargets); + gtk_clipboard_set_with_data(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), + targetTable, numberOfTargets, + pasting_test_get_data_callback, + pasting_test_clear_data_callback, + g_strdup(fixture->info->expectedContent)); + gtk_target_list_unref(targetList); + gtk_target_table_free(targetTable, numberOfTargets); + + g_signal_connect(fixture->window, "map-event", + G_CALLBACK(map_event_cb), fixture); + g_signal_connect(fixture->webView, "window-object-cleared", + G_CALLBACK(window_object_cleared_callback), fixture); + + gtk_widget_show(fixture->window); + gtk_widget_show(GTK_WIDGET(fixture->webView)); + gtk_window_present(GTK_WINDOW(fixture->window)); + + g_main_loop_run(fixture->loop); +} + + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + const char* selected_span_html = "<html><body>" + "<span id=\"mainspan\">All work and no play <span>make Jack a dull</span> boy.</span>" + "<script>document.getSelection().collapse();\n" + "document.getSelection().selectAllChildren(document.getElementById('mainspan'));\n" + "</script></body></html>"; + const char* no_selection_html = "<html><body>" + "<span id=\"mainspan\">All work and no play <span>make Jack a dull</span> boy</span>" + "<script>document.getSelection().collapse();\n" + "</script></body></html>"; + + g_test_add("/webkit/copyandpaste/selection", CopyAndPasteFixture, + test_info_new(selected_span_html, "All work and no play make Jack a dull boy."), + copy_and_paste_fixture_setup, + test_copy_and_paste, + copy_and_paste_fixture_teardown); + g_test_add("/webkit/copyandpaste/no-selection", CopyAndPasteFixture, + test_info_new(no_selection_html, 0), + copy_and_paste_fixture_setup, + test_copy_and_paste, + copy_and_paste_fixture_teardown); + + const char* paste_test_html = "<html>" + "<body onLoad=\"document.body.focus(); runTest();\" contentEditable=\"true\">" + "</body></html>"; + g_test_add("/webkit/copyandpaste/paste-markup", CopyAndPasteFixture, + test_info_new(paste_test_html, "bobby"), + copy_and_paste_fixture_setup, + test_pasting_markup, + copy_and_paste_fixture_teardown); + + return g_test_run(); +} + +#else + +int main(int argc, char** argv) +{ + g_critical("You will need at least GTK+ 2.14.0 to run the unit tests."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testdomdocument.c b/Source/WebKit/gtk/tests/testdomdocument.c new file mode 100644 index 0000000..aa6cbb3 --- /dev/null +++ b/Source/WebKit/gtk/tests/testdomdocument.c @@ -0,0 +1,375 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +#define HTML_DOCUMENT_TITLE "<html><head><title>This is the title</title></head><body></body></html>" +#define HTML_DOCUMENT_ELEMENTS "<html><body><ul><li>1</li><li>2</li><li>3</li></ul></body></html>" +#define HTML_DOCUMENT_ELEMENTS_CLASS "<html><body><div class=\"test\"></div><div class=\"strange\"></div><div class=\"test\"></div></body></html>" +#define HTML_DOCUMENT_ELEMENTS_ID "<html><body><div id=\"testok\"></div><div id=\"testbad\">first</div><div id=\"testbad\">second</div></body></html>" +#define HTML_DOCUMENT_LINKS "<html><head><title>Title</title></head><body><a href=\"about:blank\">blank</a><a href=\"http://www.google.com\">google</a><a href=\"http://www.webkit.org\">webkit</a></body></html>" +#define HTML_DOCUMENT_IFRAME "<html><head><title>IFrame</title></head><body><iframe id='iframe'></iframe><div id='test'></div></body></html>" + +typedef struct { + GtkWidget* webView; + GMainLoop* loop; +} DomDocumentFixture; + +static gboolean finish_loading(DomDocumentFixture* fixture) +{ + if (g_main_loop_is_running(fixture->loop)) + g_main_loop_quit(fixture->loop); + + return FALSE; +} + +static void dom_document_fixture_setup(DomDocumentFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + fixture->webView = webkit_web_view_new(); + g_object_ref_sink(fixture->webView); + + if (data != NULL) + webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*) data, NULL, NULL, NULL); + + g_idle_add((GSourceFunc)finish_loading, fixture); + g_main_loop_run(fixture->loop); +} + +static void dom_document_fixture_teardown(DomDocumentFixture* fixture, gconstpointer data) +{ + if (fixture->webView) + g_object_unref(fixture->webView); + g_main_loop_unref(fixture->loop); +} + +static void test_dom_document_title(DomDocumentFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + gchar* title = webkit_dom_document_get_title(document); + g_assert(title); + g_assert_cmpstr(title, ==, "This is the title"); + g_free(title); + webkit_dom_document_set_title(document, "This is the second title"); + title = webkit_dom_document_get_title(document); + g_assert(title); + g_assert_cmpstr(title, ==, "This is the second title"); + g_free(title); +} + +static void test_dom_document_get_elements_by_tag_name(DomDocumentFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + WebKitDOMNodeList* list = webkit_dom_document_get_elements_by_tag_name(document, "li"); + g_assert(list); + gulong length = webkit_dom_node_list_get_length(list); + g_assert_cmpint(length, ==, 3); + + guint i; + + for (i = 0; i < length; i++) { + WebKitDOMNode* item = webkit_dom_node_list_item(list, i); + g_assert(item); + WebKitDOMElement* element = (WebKitDOMElement*)item; + g_assert(element); + g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "LI"); + WebKitDOMHTMLElement* htmlElement = (WebKitDOMHTMLElement*)element; + char* n = g_strdup_printf("%d", i+1); + g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, n); + g_free(n); + } + + g_object_unref(list); +} + +static void test_dom_document_get_elements_by_class_name(DomDocumentFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + WebKitDOMNodeList* list = webkit_dom_document_get_elements_by_class_name(document, "test"); + g_assert(list); + gulong length = webkit_dom_node_list_get_length(list); + g_assert_cmpint(length, ==, 2); + + guint i; + + for (i = 0; i < length; i++) { + WebKitDOMNode* item = webkit_dom_node_list_item(list, i); + g_assert(item); + WebKitDOMElement* element = (WebKitDOMElement*)item; + g_assert(element); + g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "DIV"); + } + + g_object_unref(list); +} + +static void test_dom_document_get_element_by_id(DomDocumentFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + WebKitDOMElement* element = webkit_dom_document_get_element_by_id(document, "testok"); + g_assert(element); + element = webkit_dom_document_get_element_by_id(document, "this-id-does-not-exist"); + g_assert(element == 0); + /* The DOM spec says the return value is undefined when there's + * more than one element with the same id; in our case the first + * one will be returned */ + element = webkit_dom_document_get_element_by_id(document, "testbad"); + g_assert(element); + WebKitDOMHTMLElement* htmlElement = (WebKitDOMHTMLElement*)element; + g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, "first"); +} + +static void test_dom_document_get_links(DomDocumentFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + WebKitDOMHTMLCollection *collection = webkit_dom_document_get_links(document); + g_assert(collection); + gulong length = webkit_dom_html_collection_get_length(collection); + g_assert_cmpint(length, ==, 3); + + guint i; + + for (i = 0; i < length; i++) { + static const char* names[] = { "blank", "google", "webkit" }; + static const char* uris[] = { "about:blank", "http://www.google.com/", "http://www.webkit.org/" }; + WebKitDOMNode *node = webkit_dom_html_collection_item(collection, i); + g_assert(node); + WebKitDOMElement* element = (WebKitDOMElement*)node; + g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "A"); + WebKitDOMHTMLElement *htmlElement = (WebKitDOMHTMLElement*)element; + g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, names[i]); + WebKitDOMHTMLAnchorElement *anchor = (WebKitDOMHTMLAnchorElement*)element; + g_assert_cmpstr(webkit_dom_html_anchor_element_get_href(anchor), ==, uris[i]); + } + g_object_unref(collection); +} + +static void weak_notify(gpointer data, GObject* zombie) +{ + guint* count = (guint*)data; + (*count)++; +} + +static void test_dom_document_garbage_collection(DomDocumentFixture* fixture, gconstpointer data) +{ + guint count = 0; + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count); + WebKitDOMHTMLHeadElement* head = webkit_dom_document_get_head(document); + g_assert(head); + g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count); + WebKitDOMHTMLElement* body = webkit_dom_document_get_body(document); + g_assert(body); + g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count); + WebKitDOMHTMLCollection *collection = webkit_dom_document_get_links(document); + g_assert(collection); + g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count); + + webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_LINKS, NULL, NULL, NULL); + + while (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, FALSE); + + g_assert_cmpuint(count, ==, 3); + + g_object_unref(collection); + g_assert_cmpuint(count, ==, 4); + + count = 0; + + document = webkit_web_view_get_dom_document(view); + g_assert(document); + g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count); + head = webkit_dom_document_get_head(document); + g_assert(head); + g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count); + body = webkit_dom_document_get_body(document); + g_assert(body); + g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count); + collection = webkit_dom_document_get_links(document); + g_assert(collection); + g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count); + /* Ask twice for the same object */ + WebKitDOMHTMLCollection* collection2 = webkit_dom_document_get_links(document); + g_assert(collection2); + g_object_weak_ref(G_OBJECT(collection2), (GWeakNotify)weak_notify, &count); + + g_object_unref(document); + g_object_unref(head); + g_object_unref(body); + g_object_unref(collection); + g_object_unref(collection2); + + g_assert_cmpuint(count, ==, 5); + + webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_IFRAME, NULL, NULL, NULL); + + while (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, FALSE); + + count = 0; + + document = webkit_web_view_get_dom_document(view); + WebKitDOMElement* div = webkit_dom_document_get_element_by_id(document, "test"); + g_assert(div); + g_object_weak_ref(G_OBJECT(div), (GWeakNotify)weak_notify, &count); + WebKitDOMElement* iframe = webkit_dom_document_get_element_by_id(document, "iframe"); + g_assert(iframe); + + webkit_dom_element_set_attribute(iframe, "src", "data:<html><head></head></html>", NULL); + + while (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, FALSE); + + WebKitDOMDocument* iframeDocument = webkit_dom_html_iframe_element_get_content_document(WEBKIT_DOM_HTML_IFRAME_ELEMENT(iframe)); + g_assert(iframeDocument); + head = webkit_dom_document_get_head(iframeDocument); + g_assert(head); + g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count); + + webkit_dom_element_set_attribute(iframe, "src", "about:blank", NULL); + + while (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, FALSE); + + g_assert_cmpuint(count, ==, 1); + + webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_LINKS, NULL, NULL, NULL); + + while (g_main_context_pending(NULL)) + g_main_context_iteration(NULL, FALSE); + + g_assert_cmpuint(count, ==, 2); + + count = 0; + + document = webkit_web_view_get_dom_document(view); + g_assert(document); + g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count); + /* Ask twice for the Document */ + WebKitDOMDocument* document2 = webkit_web_view_get_dom_document(view); + g_assert(document2); + g_object_weak_ref(G_OBJECT(document2), (GWeakNotify)weak_notify, &count); + head = webkit_dom_document_get_head(document); + g_assert(head); + g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count); + body = webkit_dom_document_get_body(document); + g_assert(body); + g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count); + collection = webkit_dom_document_get_links(document); + g_assert(collection); + g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count); + + gtk_widget_destroy(fixture->webView); + fixture->webView = NULL; + + g_assert_cmpuint(count, ==, 4); + + g_object_unref(collection); + + g_assert_cmpuint(count, ==, 5); +} + +int main(int argc, char** argv) +{ + if (!g_thread_supported()) + g_thread_init(NULL); + + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + g_test_add("/webkit/domdocument/test_title", + DomDocumentFixture, HTML_DOCUMENT_TITLE, + dom_document_fixture_setup, + test_dom_document_title, + dom_document_fixture_teardown); + + g_test_add("/webkit/domdocument/test_get_elements_by_tag_name", + DomDocumentFixture, HTML_DOCUMENT_ELEMENTS, + dom_document_fixture_setup, + test_dom_document_get_elements_by_tag_name, + dom_document_fixture_teardown); + + g_test_add("/webkit/domdocument/test_get_elements_by_class_name", + DomDocumentFixture, HTML_DOCUMENT_ELEMENTS_CLASS, + dom_document_fixture_setup, + test_dom_document_get_elements_by_class_name, + dom_document_fixture_teardown); + + g_test_add("/webkit/domdocument/test_get_element_by_id", + DomDocumentFixture, HTML_DOCUMENT_ELEMENTS_ID, + dom_document_fixture_setup, + test_dom_document_get_element_by_id, + dom_document_fixture_teardown); + + g_test_add("/webkit/domdocument/test_get_links", + DomDocumentFixture, HTML_DOCUMENT_LINKS, + dom_document_fixture_setup, + test_dom_document_get_links, + dom_document_fixture_teardown); + + g_test_add("/webkit/domdocument/test_garbage_collection", + DomDocumentFixture, HTML_DOCUMENT_LINKS, + dom_document_fixture_setup, + test_dom_document_garbage_collection, + dom_document_fixture_teardown); + + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testdomdomwindow.c b/Source/WebKit/gtk/tests/testdomdomwindow.c new file mode 100644 index 0000000..b15558e --- /dev/null +++ b/Source/WebKit/gtk/tests/testdomdomwindow.c @@ -0,0 +1,229 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +#define HTML_DOCUMENT "<html><head><title>This is the title</title></head><body><p id='test'>test</p></body></html>" + +typedef struct { + GtkWidget* webView; + GtkWidget* window; + WebKitDOMDOMWindow* domWindow; + GMainLoop* loop; + + gboolean loaded; + gboolean clicked; + gconstpointer data; +} DomDomviewFixture; + +static gboolean finish_loading(DomDomviewFixture* fixture) +{ + if (g_main_loop_is_running(fixture->loop)) + g_main_loop_quit(fixture->loop); + + return FALSE; +} + +static void dom_domview_fixture_setup(DomDomviewFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + fixture->webView = webkit_web_view_new(); + fixture->data = data; + + gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView)); +} + +static void dom_domview_fixture_teardown(DomDomviewFixture* fixture, gconstpointer data) +{ + gtk_widget_destroy(fixture->window); + g_main_loop_unref(fixture->loop); +} + +static gboolean loadedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, DomDomviewFixture* fixture) +{ + g_assert(fixture->loaded == FALSE); + fixture->loaded = TRUE; + + return FALSE; +} + +static gboolean clickedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, DomDomviewFixture* fixture) +{ + WebKitDOMEventTarget* target; + gushort phase; + + g_assert(event); + g_assert(WEBKIT_DOM_IS_EVENT(event)); + + // We should catch this in the bubbling up phase, since we are connecting to the toplevel object + phase = webkit_dom_event_get_event_phase(event); + g_assert_cmpint(phase, ==, 3); + + target = webkit_dom_event_get_current_target(event); + g_assert(target == WEBKIT_DOM_EVENT_TARGET(view)); + + g_assert(fixture->clicked == FALSE); + fixture->clicked = TRUE; + + finish_loading(fixture); + + return FALSE; +} + +gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, DomDomviewFixture* fixture) +{ + webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*)fixture->data, NULL, NULL, NULL); + + return FALSE; +} + +static void load_event_callback(WebKitWebView* webView, GParamSpec* spec, DomDomviewFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status == WEBKIT_LOAD_FINISHED) { + g_signal_connect(fixture->domWindow, "click-event", G_CALLBACK(clickedCallback), fixture); + + g_assert(fixture->clicked == FALSE); + gtk_test_widget_click(GTK_WIDGET(fixture->webView), 1, 0); + } + +} + +static void test_dom_domview_signals(DomDomviewFixture* fixture, gconstpointer data) +{ + g_assert(fixture); + WebKitWebView* view = (WebKitWebView*)fixture->webView; + g_assert(view); + WebKitDOMDocument* document = webkit_web_view_get_dom_document(view); + g_assert(document); + WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document); + g_assert(domWindow); + + fixture->domWindow = domWindow; + + g_signal_connect(fixture->domWindow, "load-event", G_CALLBACK(loadedCallback), fixture); + g_signal_connect(fixture->window, "map-event", G_CALLBACK(map_event_cb), fixture); + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_event_callback), fixture); + + gtk_widget_show_all(fixture->window); + gtk_window_present(GTK_WINDOW(fixture->window)); + + g_main_loop_run(fixture->loop); + + g_assert(fixture->loaded); + g_assert(fixture->clicked); +} + +static gboolean +clicked_cb(WebKitDOMEventTarget* target, WebKitDOMEvent* event, DomDomviewFixture* fixture) +{ + g_assert(fixture->clicked == FALSE); + fixture->clicked = TRUE; + finish_loading(fixture); + return FALSE; +} + +static void load_status_callback(WebKitWebView* webView, GParamSpec* spec, DomDomviewFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status == WEBKIT_LOAD_FINISHED) { + WebKitDOMDocument* document; + WebKitDOMDOMWindow* domWindow; + WebKitDOMElement* element; + WebKitDOMEvent* event; + glong clientX, clientY; + + document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView)); + g_assert(document); + domWindow = webkit_dom_document_get_default_view(document); + g_assert(domWindow); + fixture->domWindow = domWindow; + + element = webkit_dom_document_get_element_by_id(document, "test"); + g_assert(element); + event = webkit_dom_document_create_event(document, "MouseEvent", NULL); + g_assert(event); + g_assert(WEBKIT_DOM_IS_EVENT(event)); + g_assert(WEBKIT_DOM_IS_MOUSE_EVENT(event)); + clientX = webkit_dom_element_get_client_left(element); + clientY = webkit_dom_element_get_client_top(element); + webkit_dom_mouse_event_init_mouse_event(WEBKIT_DOM_MOUSE_EVENT(event), + "click", TRUE, TRUE, + fixture->domWindow, 0, 0, 0, clientX, clientY, + FALSE, FALSE, FALSE, FALSE, + 1, WEBKIT_DOM_EVENT_TARGET(element)); + g_signal_connect(element, "click-event", G_CALLBACK(clicked_cb), fixture); + g_assert(fixture->clicked == FALSE); + webkit_dom_event_target_dispatch_event(WEBKIT_DOM_EVENT_TARGET(element), event, NULL); + } + +} + +static void test_dom_domview_dispatch_event(DomDomviewFixture* fixture, gconstpointer data) +{ + g_signal_connect(fixture->window, "map-event", G_CALLBACK(map_event_cb), fixture); + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_status_callback), fixture); + + gtk_widget_show_all(fixture->window); + gtk_window_present(GTK_WINDOW(fixture->window)); + + g_main_loop_run (fixture->loop); + g_assert(fixture->clicked); +} + +int main(int argc, char** argv) +{ + if (!g_thread_supported()) + g_thread_init(NULL); + + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + g_test_add("/webkit/domdomview/signals", + DomDomviewFixture, HTML_DOCUMENT, + dom_domview_fixture_setup, + test_dom_domview_signals, + dom_domview_fixture_teardown); + + g_test_add("/webkit/domdomview/dispatch_event", + DomDomviewFixture, HTML_DOCUMENT, + dom_domview_fixture_setup, + test_dom_domview_dispatch_event, + dom_domview_fixture_teardown); + + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testdomnode.c b/Source/WebKit/gtk/tests/testdomnode.c new file mode 100644 index 0000000..893b7cc --- /dev/null +++ b/Source/WebKit/gtk/tests/testdomnode.c @@ -0,0 +1,206 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +#define HTML_DOCUMENT_HIERARCHY_NAVIGATION "<html><head><title>This is the title</title></head><body><p>1</p><p>2</p><p>3</p></body></html>" +#define HTML_DOCUMENT_NODE_INSERTION "<html><body></body></html>" + +typedef struct { + GtkWidget* webView; + GMainLoop* loop; +} DomNodeFixture; + +static gboolean finish_loading(DomNodeFixture* fixture) +{ + if (g_main_loop_is_running(fixture->loop)) + g_main_loop_quit(fixture->loop); + + return FALSE; +} + +static void dom_node_fixture_setup(DomNodeFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + fixture->webView = webkit_web_view_new(); + g_object_ref_sink(fixture->webView); + + if (data != NULL) + webkit_web_view_load_string(WEBKIT_WEB_VIEW(fixture->webView), (const char*)data, NULL, NULL, NULL); + + g_idle_add((GSourceFunc)finish_loading, fixture); + g_main_loop_run(fixture->loop); +} + +static void dom_node_fixture_teardown(DomNodeFixture* fixture, gconstpointer data) +{ + g_object_unref(fixture->webView); + g_main_loop_unref(fixture->loop); +} + +static void test_dom_node_hierarchy_navigation(DomNodeFixture* fixture, gconstpointer data) +{ + WebKitDOMDocument* document; + WebKitDOMHTMLHeadElement* head; + WebKitDOMHTMLBodyElement* body; + WebKitDOMNodeList* list; + WebKitDOMNode* ptr; + gulong i, length; + + document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView)); + g_assert(document); + g_assert(WEBKIT_DOM_IS_DOCUMENT(document)); + head = webkit_dom_document_get_head(document); + g_assert(head); + g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(head)); + + /* Title, head's child */ + g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(head))); + list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(head)); + g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1); + ptr = webkit_dom_node_list_item(list, 0); + g_assert(ptr); + g_assert(WEBKIT_DOM_IS_HTML_TITLE_ELEMENT(ptr)); + g_object_unref(list); + + /* Body, Head sibling */ + ptr = webkit_dom_node_get_next_sibling(WEBKIT_DOM_NODE(head)); + g_assert(ptr); + body = WEBKIT_DOM_HTML_BODY_ELEMENT(ptr); + g_assert(WEBKIT_DOM_IS_HTML_BODY_ELEMENT(body)); + + /* There is no third sibling */ + ptr = webkit_dom_node_get_next_sibling(ptr); + g_assert(ptr == NULL); + + /* Body's previous sibling is Head */ + ptr = webkit_dom_node_get_previous_sibling(WEBKIT_DOM_NODE(body)); + g_assert(ptr); + g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(ptr)); + + /* Body has 3 children */ + g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body))); + list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)); + length = webkit_dom_node_list_get_length(list); + g_assert_cmpint(length, ==, 3); + + /* The three of them are P tags */ + for (i = 0; i < length; i++) { + ptr = webkit_dom_node_list_item(list, i); + g_assert(ptr); + g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(ptr)); + } + + /* Go backwards */ + for (i = 0; ptr; ptr = webkit_dom_node_get_previous_sibling(ptr), i++) + /* Nothing */; + + g_assert_cmpint(i, ==, 3); + g_object_unref(list); +} + +static void test_dom_node_insertion(DomNodeFixture* fixture, gconstpointer data) +{ + WebKitDOMDocument* document; + WebKitDOMHTMLElement* body; + WebKitDOMElement* p, *div; + WebKitDOMNodeList* list; + WebKitDOMNode* node; + + document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView)); + g_assert(document); + body = webkit_dom_document_get_body(document); + g_assert(body); + g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(body)); + + /* Body shouldn't have any children at this point */ + g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)) == FALSE); + + /* Insert one P element */ + p = webkit_dom_document_create_element(document, "P", NULL); + webkit_dom_node_append_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(p), NULL); + + /* Now it should have one, the same that we inserted */ + g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body))); + list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)); + g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1); + node = webkit_dom_node_list_item(list, 0); + g_assert(node); + g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(p), node)); + g_object_unref(list); + + /* Replace the P tag with a DIV tag */ + div = webkit_dom_document_create_element(document, "DIV", NULL); + webkit_dom_node_replace_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE(p), NULL); + g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body))); + list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)); + g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1); + node = webkit_dom_node_list_item(list, 0); + g_assert(node); + g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(div), node)); + g_object_unref(list); + + /* Now remove the tag */ + webkit_dom_node_remove_child(WEBKIT_DOM_NODE(body), node, NULL); + list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)); + g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 0); + g_object_unref(list); + + /* TODO: insert_before, which does not seem to be working correctly */ +} + +int main(int argc, char** argv) +{ + if (!g_thread_supported()) + g_thread_init(NULL); + + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + g_test_add("/webkit/domnode/test_hierarchy_navigation", + DomNodeFixture, HTML_DOCUMENT_HIERARCHY_NAVIGATION, + dom_node_fixture_setup, + test_dom_node_hierarchy_navigation, + dom_node_fixture_teardown); + + g_test_add("/webkit/domnode/test_insertion", + DomNodeFixture, HTML_DOCUMENT_NODE_INSERTION, + dom_node_fixture_setup, + test_dom_node_insertion, + dom_node_fixture_teardown); + + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testdownload.c b/Source/WebKit/gtk/tests/testdownload.c new file mode 100644 index 0000000..f6ae865 --- /dev/null +++ b/Source/WebKit/gtk/tests/testdownload.c @@ -0,0 +1,272 @@ +/* + * Copyright (C) 2009 Christian Dywan <christian@twotoasts.de> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib/gstdio.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +GMainLoop* loop; +char* temporaryFilename = NULL; +WebKitDownload* theDownload = NULL; + +static void +test_webkit_download_create(void) +{ + WebKitNetworkRequest* request; + WebKitDownload* download; + const gchar* uri = "http://example.com"; + gchar* tmpDir; + + request = webkit_network_request_new(uri); + download = webkit_download_new(request); + g_object_unref(request); + g_assert_cmpstr(webkit_download_get_uri(download), ==, uri); + g_assert(webkit_download_get_network_request(download) == request); + g_assert(g_strrstr(uri, webkit_download_get_suggested_filename(download))); + g_assert(webkit_download_get_status(download) == WEBKIT_DOWNLOAD_STATUS_CREATED); + g_assert(!webkit_download_get_total_size(download)); + g_assert(!webkit_download_get_current_size(download)); + g_assert(!webkit_download_get_progress(download)); + g_assert(!webkit_download_get_elapsed_time(download)); + tmpDir = g_filename_to_uri(g_get_tmp_dir(), NULL, NULL); + webkit_download_set_destination_uri(download, tmpDir); + g_assert_cmpstr(tmpDir, ==, webkit_download_get_destination_uri(download));; + g_free(tmpDir); + g_object_unref(download); +} + +static gboolean +navigation_policy_decision_requested_cb(WebKitWebView* web_view, + WebKitWebFrame* web_frame, + WebKitNetworkRequest* request, + WebKitWebNavigationAction* action, + WebKitWebPolicyDecision* decision, + gpointer data) +{ + webkit_web_policy_decision_download(decision); + return TRUE; +} + +static void +notify_status_cb(GObject* object, GParamSpec* pspec, gpointer data) +{ + WebKitDownload* download = WEBKIT_DOWNLOAD(object); + switch (webkit_download_get_status(download)) { + case WEBKIT_DOWNLOAD_STATUS_FINISHED: + case WEBKIT_DOWNLOAD_STATUS_ERROR: + g_main_loop_quit(loop); + break; + case WEBKIT_DOWNLOAD_STATUS_CANCELLED: + g_assert_not_reached(); + break; + default: + break; + } +} + +static gboolean +set_filename(gchar* filename) +{ + gchar *uri = g_filename_to_uri(filename, NULL, NULL); + + webkit_download_set_destination_uri(theDownload, uri); + g_free(uri); + + webkit_download_start(theDownload); + return FALSE; +} + +static void +handle_download_requested_cb(WebKitDownload* download, + gboolean* beenThere, + gboolean asynch) +{ + theDownload = download; + *beenThere = TRUE; + + if (temporaryFilename) { + if (asynch) { + g_idle_add((GSourceFunc)set_filename, temporaryFilename); + } else { + gchar *uri = g_filename_to_uri(temporaryFilename, NULL, NULL); + if (uri) + webkit_download_set_destination_uri(download, uri); + g_free(uri); + } + } + + g_signal_connect(download, "notify::status", + G_CALLBACK(notify_status_cb), NULL); +} + +static gboolean +download_requested_cb(WebKitWebView* web_view, + WebKitDownload* download, + gboolean* beenThere) +{ + handle_download_requested_cb(download, beenThere, FALSE); + return TRUE; +} + +static gboolean +download_requested_asynch_cb(WebKitWebView* web_view, + WebKitDownload* download, + gboolean* beenThere) +{ + handle_download_requested_cb(download, beenThere, TRUE); + return TRUE; +} + +static void +test_webkit_download_perform(gboolean asynch) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + GCallback downloadRequestCallback = NULL; + + g_object_ref_sink(G_OBJECT(webView)); + + g_signal_connect(webView, "navigation-policy-decision-requested", + G_CALLBACK(navigation_policy_decision_requested_cb), + NULL); + + if (asynch) + downloadRequestCallback = G_CALLBACK(download_requested_asynch_cb); + else + downloadRequestCallback = G_CALLBACK(download_requested_cb); + + gboolean beenThere = FALSE; + g_signal_connect(webView, "download-requested", + downloadRequestCallback, &beenThere); + + /* Preparation; FIXME: we should move this code to a test + * utilities file, because we have a very similar one in + * testwebframe.c */ + GError *error = NULL; + gchar* filename; + int fd = g_file_open_tmp("webkit-testwebdownload-XXXXXX", &filename, &error); + close(fd); + + if (error) + g_critical("Failed to open a temporary file for writing: %s.", error->message); + + if (g_unlink(filename) == -1) + g_critical("Failed to delete the temporary file: %s.", g_strerror(errno)); + + theDownload = NULL; + temporaryFilename = filename; + + loop = g_main_loop_new(NULL, TRUE); + webkit_web_view_load_uri(webView, "http://gnome.org/"); + g_main_loop_run(loop); + + g_assert_cmpint(beenThere, ==, TRUE); + + g_assert_cmpint(g_file_test(temporaryFilename, G_FILE_TEST_IS_REGULAR), ==, TRUE); + + g_unlink(temporaryFilename); + g_free(temporaryFilename); + temporaryFilename = NULL; + + g_main_loop_unref(loop); + g_object_unref(webView); +} + +static void +test_webkit_download_synch(void) +{ + test_webkit_download_perform(FALSE); +} + +static void +test_webkit_download_asynch(void) +{ + test_webkit_download_perform(TRUE); +} + +static gboolean mime_type_policy_decision_requested_cb(WebKitWebView* view, WebKitWebFrame* frame, + WebKitNetworkRequest* request, const char* mime_type, + WebKitWebPolicyDecision* decision, gpointer data) +{ + webkit_web_policy_decision_download(decision); + return TRUE; +} + +static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED || + webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED) + g_main_loop_quit(loop); +} + +static void +test_webkit_download_data(void) +{ + gboolean beenThere = FALSE; + WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + + g_signal_connect(webView, "download-requested", + G_CALLBACK(download_requested_cb), + &beenThere); + + g_signal_connect(webView, "notify::load-status", + G_CALLBACK(idle_quit_loop_cb), + NULL); + + g_signal_connect(webView, "mime-type-policy-decision-requested", + G_CALLBACK(mime_type_policy_decision_requested_cb), + NULL); + + loop = g_main_loop_new(NULL, TRUE); + + /* We're testing for a crash, so just not crashing is a pass */ + webkit_web_view_load_uri(webView, "data:application/octect-stream,"); + g_main_loop_run(loop); + + g_assert_cmpint(beenThere, ==, TRUE); + + g_main_loop_unref(loop); + g_object_unref(webView); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/download/create", test_webkit_download_create); + g_test_add_func("/webkit/download/synch", test_webkit_download_synch); + g_test_add_func("/webkit/download/asynch", test_webkit_download_asynch); + g_test_add_func("/webkit/download/data", test_webkit_download_data); + return g_test_run (); +} + +#else + +int main(int argc, char** argv) +{ + g_critical("You will need at least GTK+ 2.14.0 to run the unit tests."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testglobals.c b/Source/WebKit/gtk/tests/testglobals.c new file mode 100644 index 0000000..da0ffa3 --- /dev/null +++ b/Source/WebKit/gtk/tests/testglobals.c @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <gtk/gtk.h> +#include <libsoup/soup.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +// Make sure the session is initialized properly when webkit_get_default_session() is called. +static void test_globals_default_session() +{ + g_test_bug("36754"); + + SoupSession* session = webkit_get_default_session(); + soup_session_remove_feature_by_type(session, WEBKIT_TYPE_SOUP_AUTH_DIALOG); + + // This makes sure our initialization ran. + g_assert(soup_session_get_feature(session, SOUP_TYPE_CONTENT_DECODER) != NULL); + + // Creating a WebView should make sure the session is + // initialized, and not mess with our changes. + WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(web_view); + g_object_unref(web_view); + + // These makes sure our modification was kept. + g_assert(soup_session_get_feature(session, SOUP_TYPE_CONTENT_DECODER) != NULL); + g_assert(soup_session_get_feature(session, WEBKIT_TYPE_SOUP_AUTH_DIALOG) == NULL); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/globals/default_session", + test_globals_default_session); + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testhittestresult.c b/Source/WebKit/gtk/tests/testhittestresult.c new file mode 100644 index 0000000..0d7fb05 --- /dev/null +++ b/Source/WebKit/gtk/tests/testhittestresult.c @@ -0,0 +1,174 @@ +/* + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib/gstdio.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +typedef struct { + char* data; + guint flag; +} TestInfo; + +static GMainLoop* loop; + +typedef struct { + WebKitWebView* webView; + TestInfo* info; +} HitTestResultFixture; + +TestInfo* +test_info_new(const char* data, guint flag) +{ + TestInfo* info; + + info = g_slice_new(TestInfo); + info->data = g_strdup(data); + info->flag = flag; + + return info; +} + +void +test_info_destroy(TestInfo* info) +{ + g_free(info->data); + g_slice_free(TestInfo, info); +} + +static void hit_test_result_fixture_setup(HitTestResultFixture* fixture, gconstpointer data) +{ + fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(fixture->webView); + loop = g_main_loop_new(NULL, TRUE); + fixture->info = (TestInfo*)data; +} + +static void hit_test_result_fixture_teardown(HitTestResultFixture* fixture, gconstpointer data) +{ + g_object_unref(fixture->webView); + g_main_loop_unref(loop); + test_info_destroy(fixture->info); +} + +static void +load_status_cb(WebKitWebView* webView, + GParamSpec* spec, + gpointer data) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + TestInfo* info = (TestInfo*)data; + + if (status == WEBKIT_LOAD_FINISHED) { + WebKitHitTestResult* result; + guint context; + GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS); + WebKitDOMNode* node; + + /* Close enough to 0,0 */ + event->button.x = 5; + event->button.y = 5; + + result = webkit_web_view_get_hit_test_result(webView, (GdkEventButton*) event); + gdk_event_free(event); + g_assert(result); + + g_object_get(result, "context", &context, NULL); + g_assert(context & info->flag); + + g_object_get(result, "inner-node", &node, NULL); + g_assert(node); + g_assert(WEBKIT_DOM_IS_NODE(node)); + /* We can only test these node types at the moment. In the + * input case there seems to be an extra layer with a DIV on + * top of the input, which gets assigned to the inner-node. + * tag */ + if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT) + g_assert(WEBKIT_DOM_IS_HTML_HTML_ELEMENT(node)); + else if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) + g_assert(WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT(node)); + else if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) { + /* The hit test will give us the inner text node, we want + * the A tag */ + WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node); + g_assert(WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(parent)); + } + + g_object_unref(result); + g_main_loop_quit(loop); + } +} + +static void +test_webkit_hit_test_result(HitTestResultFixture* fixture, gconstpointer data) +{ + TestInfo* info = (TestInfo*)data; + GtkAllocation allocation = { 0, 0, 50, 50 }; + + webkit_web_view_load_string(fixture->webView, + info->data, + "text/html", + "utf-8", + "file://"); + gtk_widget_size_allocate(GTK_WIDGET(fixture->webView), &allocation); + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_status_cb), info); + g_main_loop_run(loop); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + g_test_add("/webkit/hittestresult/document", HitTestResultFixture, + test_info_new("<html><body><h1>WebKitGTK+!</h1></body></html>", + WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT), + hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown); + /* We hardcode all elements to be at 0,0 so that we know where to + * generate the button events */ + g_test_add("/webkit/hittestresult/image", HitTestResultFixture, + test_info_new("<html><body><img style='position:absolute; left:0; top:0'src='0xdeadbeef' width=50 height=50></img></body></html>", + WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE), + hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown); + g_test_add("/webkit/hittestresult/editable", HitTestResultFixture, + test_info_new("<html><body><input style='position:absolute; left:0; top:0' size='35'></input>></body></html>", + WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE), + hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown); + g_test_add("/webkit/hittestresult/link", HitTestResultFixture, + test_info_new("<html><body><a style='position:absolute; left:0; top:0' href='http://www.example.com'>HELLO WORLD</a></body></html>", + WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK), + hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown); + + return g_test_run (); +} + +#else + +int main(int argc, char** argv) +{ + g_critical("You will need at least GTK+ 2.14.0 to run the unit tests."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testhttpbackend.c b/Source/WebKit/gtk/tests/testhttpbackend.c new file mode 100644 index 0000000..f0fac16 --- /dev/null +++ b/Source/WebKit/gtk/tests/testhttpbackend.c @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2009 Gustavo Noronha Silva + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +// Not yet public API +SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request); + +static gboolean navigation_policy_decision_requested_cb(WebKitWebView* web_view, + WebKitWebFrame* web_frame, + WebKitNetworkRequest* request, + WebKitWebNavigationAction* action, + WebKitWebPolicyDecision* decision, + gpointer data) +{ + SoupMessage* message = webkit_network_request_get_message(request); + + /* 1 -> webkit_network_request_with_core_request + * + * The SoupMessage is created exclusively for the emission of this + * signal. + */ + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); + + return FALSE; +} + +static void test_soup_message_lifetime() +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + + g_object_ref_sink(web_view); + + g_signal_connect(web_view, "navigation-policy-decision-requested", + G_CALLBACK(navigation_policy_decision_requested_cb), + NULL); + + /* load_uri will trigger the navigation-policy-decision-requested + * signal emission; + */ + webkit_web_view_load_uri(web_view, "http://127.0.0.1/"); + + g_object_unref(web_view); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/soupmessage/lifetime", test_soup_message_lifetime); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testkeyevents.c b/Source/WebKit/gtk/tests/testkeyevents.c new file mode 100644 index 0000000..b41a032 --- /dev/null +++ b/Source/WebKit/gtk/tests/testkeyevents.c @@ -0,0 +1,402 @@ +/* + * Copyright (C) 2009, 2010 Martin Robinson <mrobinson@webkit.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2,1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <string.h> +#include <glib/gstdio.h> +#include <webkit/webkit.h> +#include <JavaScriptCore/JSStringRef.h> +#include <JavaScriptCore/JSContextRef.h> + + +#if GTK_CHECK_VERSION(2, 14, 0) + +typedef struct { + char* page; + char* text; + gboolean shouldBeHandled; +} TestInfo; + +typedef struct { + GtkWidget* window; + WebKitWebView* webView; + GMainLoop* loop; + TestInfo* info; +} KeyEventFixture; + +TestInfo* +test_info_new(const char* page, gboolean shouldBeHandled) +{ + TestInfo* info; + + info = g_slice_new(TestInfo); + info->page = g_strdup(page); + info->shouldBeHandled = shouldBeHandled; + info->text = 0; + + return info; +} + +void +test_info_destroy(TestInfo* info) +{ + g_free(info->page); + g_free(info->text); + g_slice_free(TestInfo, info); +} + +static void key_event_fixture_setup(KeyEventFixture* fixture, gconstpointer data) +{ + fixture->loop = g_main_loop_new(NULL, TRUE); + + fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + + gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView)); +} + +static void key_event_fixture_teardown(KeyEventFixture* fixture, gconstpointer data) +{ + gtk_widget_destroy(fixture->window); + g_main_loop_unref(fixture->loop); + test_info_destroy(fixture->info); +} + +static gboolean key_press_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key); + g_assert_cmpint(handled, ==, fixture->info->shouldBeHandled); + + return FALSE; +} + +static gboolean key_release_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data) +{ + // WebCore never seems to mark keyup events as handled. + KeyEventFixture* fixture = (KeyEventFixture*)data; + gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key); + g_assert(!handled); + + g_main_loop_quit(fixture->loop); + + return FALSE; +} + +static void test_keypress_events_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status == WEBKIT_LOAD_FINISHED) { + g_signal_connect(fixture->webView, "key-press-event", + G_CALLBACK(key_press_event_cb), fixture); + g_signal_connect(fixture->webView, "key-release-event", + G_CALLBACK(key_release_event_cb), fixture); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('a'), 0)) + g_assert_not_reached(); + } + +} + +gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data) +{ + gtk_widget_grab_focus(widget); + KeyEventFixture* fixture = (KeyEventFixture*)data; + webkit_web_view_load_string(fixture->webView, fixture->info->page, + "text/html", "utf-8", "file://"); + return FALSE; +} + +static void setup_keyevent_test(KeyEventFixture* fixture, gconstpointer data, GCallback load_event_callback) +{ + fixture->info = (TestInfo*)data; + g_signal_connect(fixture->window, "map-event", + G_CALLBACK(map_event_cb), fixture); + + gtk_widget_show(fixture->window); + gtk_widget_show(GTK_WIDGET(fixture->webView)); + gtk_window_present(GTK_WINDOW(fixture->window)); + + g_signal_connect(fixture->webView, "notify::load-status", + load_event_callback, fixture); + + g_main_loop_run(fixture->loop); +} + +static void test_keypress_events(KeyEventFixture* fixture, gconstpointer data) +{ + setup_keyevent_test(fixture, data, G_CALLBACK(test_keypress_events_load_status_cb)); +} + +static gboolean element_text_equal_to(JSContextRef context, const gchar* text) +{ + JSStringRef scriptString = JSStringCreateWithUTF8CString( + "window.document.getElementById(\"in\").value;"); + JSValueRef value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0); + JSStringRelease(scriptString); + + // If the value isn't a string, the element is probably a div + // so grab the innerText instead. + if (!JSValueIsString(context, value)) { + JSStringRef scriptString = JSStringCreateWithUTF8CString( + "window.document.getElementById(\"in\").innerText;"); + value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0); + JSStringRelease(scriptString); + } + + g_assert(JSValueIsString(context, value)); + JSStringRef inputString = JSValueToStringCopy(context, value, 0); + g_assert(inputString); + + gint size = JSStringGetMaximumUTF8CStringSize(inputString); + gchar* cString = g_malloc(size); + JSStringGetUTF8CString(inputString, cString, size); + JSStringRelease(inputString); + + gboolean result = g_utf8_collate(cString, text) == 0; + g_free(cString); + return result; +} + +static void test_ime_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status != WEBKIT_LOAD_FINISHED) + return; + + JSGlobalContextRef context = webkit_web_frame_get_global_context( + webkit_web_view_get_main_frame(webView)); + g_assert(context); + + GtkIMContext* imContext = 0; + g_object_get(webView, "im-context", &imContext, NULL); + g_assert(imContext); + + // Test that commits that happen outside of key events + // change the text field immediately. This closely replicates + // the behavior of SCIM. + g_assert(element_text_equal_to(context, "")); + g_signal_emit_by_name(imContext, "commit", "a"); + g_assert(element_text_equal_to(context, "a")); + g_signal_emit_by_name(imContext, "commit", "b"); + g_assert(element_text_equal_to(context, "ab")); + g_signal_emit_by_name(imContext, "commit", "c"); + g_assert(element_text_equal_to(context, "abc")); + + g_object_unref(imContext); + g_main_loop_quit(fixture->loop); +} + +static void test_ime(KeyEventFixture* fixture, gconstpointer data) +{ + setup_keyevent_test(fixture, data, G_CALLBACK(test_ime_load_status_cb)); +} + +static gboolean verify_contents(gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + JSGlobalContextRef context = webkit_web_frame_get_global_context( + webkit_web_view_get_main_frame(fixture->webView)); + g_assert(context); + + g_assert(element_text_equal_to(context, fixture->info->text)); + g_main_loop_quit(fixture->loop); + return FALSE; +} + +static void test_blocking_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status != WEBKIT_LOAD_FINISHED) + return; + + // The first keypress event should not modify the field. + fixture->info->text = g_strdup("bc"); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('a'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('b'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('c'), 0)) + g_assert_not_reached(); + + g_idle_add(verify_contents, fixture); +} + +static void test_blocking(KeyEventFixture* fixture, gconstpointer data) +{ + setup_keyevent_test(fixture, data, G_CALLBACK(test_blocking_load_status_cb)); +} + +#if defined(GDK_WINDOWING_X11) && GTK_CHECK_VERSION(2, 16, 0) +static void test_xim_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data) +{ + KeyEventFixture* fixture = (KeyEventFixture*)data; + WebKitLoadStatus status = webkit_web_view_get_load_status(webView); + if (status != WEBKIT_LOAD_FINISHED) + return; + + GtkIMContext* imContext = 0; + g_object_get(webView, "im-context", &imContext, NULL); + g_assert(imContext); + + gchar* originalId = g_strdup(gtk_im_multicontext_get_context_id(GTK_IM_MULTICONTEXT(imContext))); + gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), "xim"); + + // Test that commits that happen outside of key events + // change the text field immediately. This closely replicates + // the behavior of SCIM. + fixture->info->text = g_strdup("debian"); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('d'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('e'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('b'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('i'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('a'), 0)) + g_assert_not_reached(); + if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView), + gdk_unicode_to_keyval('n'), 0)) + g_assert_not_reached(); + + gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), originalId); + g_free(originalId); + g_object_unref(imContext); + + g_idle_add(verify_contents, fixture); +} + +static void test_xim(KeyEventFixture* fixture, gconstpointer data) +{ + setup_keyevent_test(fixture, data, G_CALLBACK(test_xim_load_status_cb)); +} +#endif + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + + + // We'll test input on a slew of different node types. Key events to + // text inputs and editable divs should be marked as handled. Key events + // to buttons and links should not. + const char* textinput_html = "<html><body><input id=\"in\" type=\"text\">" + "<script>document.getElementById('in').focus();</script></body></html>"; + const char* button_html = "<html><body><input id=\"in\" type=\"button\">" + "<script>document.getElementById('in').focus();</script></body></html>"; + const char* link_html = "<html><body><a href=\"http://www.gnome.org\" id=\"in\">" + "LINKY MCLINKERSON</a><script>document.getElementById('in').focus();</script>" + "</body></html>"; + const char* div_html = "<html><body><div id=\"in\" contenteditable=\"true\">" + "<script>document.getElementById('in').focus();</script></body></html>"; + + // These are similar to the blocks above, but they should block the first + // keypress modifying the editable node. + const char* textinput_html_blocking = "<html><body>" + "<input id=\"in\" type=\"text\" " + "onkeypress=\"if (first) {event.preventDefault();first=false;}\">" + "<script>first = true;\ndocument.getElementById('in').focus();</script>\n" + "</script></body></html>"; + const char* div_html_blocking = "<html><body>" + "<div id=\"in\" contenteditable=\"true\" " + "onkeypress=\"if (first) {event.preventDefault();first=false;}\">" + "<script>first = true; document.getElementById('in').focus();</script>\n" + "</script></body></html>"; + + g_test_add("/webkit/keyevents/event-textinput", KeyEventFixture, + test_info_new(textinput_html, TRUE), + key_event_fixture_setup, + test_keypress_events, + key_event_fixture_teardown); + g_test_add("/webkit/keyevents/event-buttons", KeyEventFixture, + test_info_new(button_html, FALSE), + key_event_fixture_setup, + test_keypress_events, + key_event_fixture_teardown); + g_test_add("/webkit/keyevents/event-link", KeyEventFixture, + test_info_new(link_html, FALSE), + key_event_fixture_setup, + test_keypress_events, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/event-div", KeyEventFixture, + test_info_new(div_html, TRUE), + key_event_fixture_setup, + test_keypress_events, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/ime-textinput", KeyEventFixture, + test_info_new(textinput_html, TRUE), + key_event_fixture_setup, + test_ime, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/ime-div", KeyEventFixture, + test_info_new(div_html, TRUE), + key_event_fixture_setup, + test_ime, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/block-textinput", KeyEventFixture, + test_info_new(textinput_html_blocking, TRUE), + key_event_fixture_setup, + test_blocking, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/block-div", KeyEventFixture, + test_info_new(div_html_blocking, TRUE), + key_event_fixture_setup, + test_blocking, + key_event_fixture_teardown); +#if defined(GDK_WINDOWING_X11) && GTK_CHECK_VERSION(2, 16, 0) + g_test_add("/webkit/keyevent/xim-textinput", KeyEventFixture, + test_info_new(textinput_html, TRUE), + key_event_fixture_setup, + test_xim, + key_event_fixture_teardown); + g_test_add("/webkit/keyevent/xim-div", KeyEventFixture, + test_info_new(div_html, TRUE), + key_event_fixture_setup, + test_xim, + key_event_fixture_teardown); +#endif + + return g_test_run(); +} + +#else + +int main(int argc, char** argv) +{ + g_critical("You will need at least GTK+ 2.14.0 to run the unit tests."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testloading.c b/Source/WebKit/gtk/tests/testloading.c new file mode 100644 index 0000000..a0ec8c9 --- /dev/null +++ b/Source/WebKit/gtk/tests/testloading.c @@ -0,0 +1,445 @@ +/* + * Copyright (C) 2009, 2010 Gustavo Noronha Silva + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <gtk/gtk.h> +#include <libsoup/soup.h> +#include <string.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +/* This string has to be rather big because of the cancelled test - it + * looks like soup refuses to send or receive a too small chunk */ +#define HTML_STRING "<html><body>Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!</body></html>" + +SoupURI* base_uri; + +/* For real request testing */ +static void +server_callback(SoupServer* server, SoupMessage* msg, + const char* path, GHashTable* query, + SoupClientContext* context, gpointer data) +{ + if (msg->method != SOUP_METHOD_GET) { + soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + soup_message_set_status(msg, SOUP_STATUS_OK); + + if (g_str_equal(path, "/test_loading_status") || g_str_equal(path, "/test_loading_status2")) + soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING)); + else if (g_str_equal(path, "/test_load_error")) { + soup_message_set_status(msg, SOUP_STATUS_CANT_CONNECT); + } else if (g_str_equal(path, "/test_loading_cancelled")) { + soup_message_headers_set_encoding(msg->response_headers, SOUP_ENCODING_CHUNKED); + soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING)); + soup_server_unpause_message(server, msg); + return; + } + + soup_message_body_complete(msg->response_body); +} + +typedef struct { + WebKitWebView* webView; + GMainLoop *loop; + gboolean has_been_provisional; + gboolean has_been_committed; + gboolean has_been_first_visually_non_empty_layout; + gboolean has_been_finished; + gboolean has_been_failed; + gboolean has_been_load_error; +} WebLoadingFixture; + +static void web_loading_fixture_setup(WebLoadingFixture* fixture, gconstpointer data) +{ + fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + fixture->loop = g_main_loop_new(NULL, TRUE); + g_object_ref_sink(fixture->webView); + fixture->has_been_provisional = FALSE; + fixture->has_been_committed = FALSE; + fixture->has_been_first_visually_non_empty_layout = FALSE; + fixture->has_been_finished = FALSE; + fixture->has_been_failed = FALSE; + fixture->has_been_load_error = FALSE; +} + +static void web_loading_fixture_teardown(WebLoadingFixture* fixture, gconstpointer data) +{ + g_object_unref(fixture->webView); + g_main_loop_unref(fixture->loop); +} + +static char* get_uri_for_path(const char* path) +{ + SoupURI* uri; + char* uri_string; + + uri = soup_uri_new_with_base(base_uri, path); + uri_string = soup_uri_to_string(uri, FALSE); + soup_uri_free (uri); + + return uri_string; +} + +static void load_finished_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebLoadingFixture* fixture) +{ + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_committed); + g_assert(fixture->has_been_first_visually_non_empty_layout); + + g_main_loop_quit(fixture->loop); +} + + +static void status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); + + switch (status) { + case WEBKIT_LOAD_PROVISIONAL: + g_assert(!fixture->has_been_provisional); + g_assert(!fixture->has_been_committed); + g_assert(!fixture->has_been_first_visually_non_empty_layout); + fixture->has_been_provisional = TRUE; + break; + case WEBKIT_LOAD_COMMITTED: + g_assert(fixture->has_been_provisional); + g_assert(!fixture->has_been_committed); + g_assert(!fixture->has_been_first_visually_non_empty_layout); + fixture->has_been_committed = TRUE; + break; + case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_committed); + g_assert(!fixture->has_been_first_visually_non_empty_layout); + fixture->has_been_first_visually_non_empty_layout = TRUE; + break; + case WEBKIT_LOAD_FINISHED: + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_committed); + g_assert(fixture->has_been_first_visually_non_empty_layout); + break; + default: + g_assert_not_reached(); + } +} + +static void test_loading_status(WebLoadingFixture* fixture, gconstpointer data) +{ + char* uri_string; + + g_assert_cmpint(webkit_web_view_get_load_status(fixture->webView), ==, WEBKIT_LOAD_PROVISIONAL); + + g_object_connect(G_OBJECT(fixture->webView), + "signal::notify::load-status", G_CALLBACK(status_changed_cb), fixture, + "signal::load-finished", G_CALLBACK(load_finished_cb), fixture, + NULL); + + uri_string = get_uri_for_path("/test_loading_status"); + + /* load_uri will trigger the navigation-policy-decision-requested + * signal emission; + */ + webkit_web_view_load_uri(fixture->webView, uri_string); + g_free(uri_string); + + g_main_loop_run(fixture->loop); +} + +static void load_error_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); + + switch(status) { + case WEBKIT_LOAD_PROVISIONAL: + g_assert(!fixture->has_been_provisional); + fixture->has_been_provisional = TRUE; + break; + case WEBKIT_LOAD_COMMITTED: + g_assert(!fixture->has_been_committed); + fixture->has_been_committed = TRUE; + break; + case WEBKIT_LOAD_FINISHED: + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_load_error); + g_assert(fixture->has_been_failed); + g_assert(!fixture->has_been_finished); + fixture->has_been_finished = TRUE; + break; + case WEBKIT_LOAD_FAILED: + g_assert(!fixture->has_been_failed); + fixture->has_been_failed = TRUE; + g_main_loop_quit(fixture->loop); + break; + default: + break; + } +} + +static gboolean load_error_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture) +{ + g_assert(fixture->has_been_provisional); + g_assert(!fixture->has_been_load_error); + fixture->has_been_load_error = TRUE; + + return FALSE; +} + +static void test_loading_error(WebLoadingFixture* fixture, gconstpointer data) +{ + char* uri_string; + + g_test_bug("28842"); + + g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_cb), fixture); + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_error_status_changed_cb), fixture); + + uri_string = get_uri_for_path("/test_load_error"); + webkit_web_view_load_uri(fixture->webView, uri_string); + g_free(uri_string); + + g_main_loop_run(fixture->loop); + + g_assert(fixture->has_been_provisional); + g_assert(!fixture->has_been_committed); + g_assert(fixture->has_been_load_error); + g_assert(fixture->has_been_failed); + g_assert(!fixture->has_been_finished); +} + +/* Cancelled load */ + +static gboolean load_cancelled_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture) +{ + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_failed); + g_assert(!fixture->has_been_load_error); + g_assert(error->code == WEBKIT_NETWORK_ERROR_CANCELLED); + fixture->has_been_load_error = TRUE; + + return TRUE; +} + +static gboolean stop_load (gpointer data) +{ + webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(data)); + return FALSE; +} + +static void load_cancelled_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); + + switch(status) { + case WEBKIT_LOAD_PROVISIONAL: + g_assert(!fixture->has_been_provisional); + g_assert(!fixture->has_been_failed); + fixture->has_been_provisional = TRUE; + break; + case WEBKIT_LOAD_COMMITTED: + g_idle_add (stop_load, object); + break; + case WEBKIT_LOAD_FAILED: + g_assert(fixture->has_been_provisional); + g_assert(!fixture->has_been_failed); + g_assert(!fixture->has_been_load_error); + fixture->has_been_failed = TRUE; + g_main_loop_quit(fixture->loop); + break; + case WEBKIT_LOAD_FINISHED: + g_assert_not_reached(); + break; + default: + break; + } +} + +static void test_loading_cancelled(WebLoadingFixture* fixture, gconstpointer data) +{ + char* uri_string; + + g_test_bug("29644"); + + g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_cancelled_cb), fixture); + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_cancelled_status_changed_cb), fixture); + + uri_string = get_uri_for_path("/test_loading_cancelled"); + webkit_web_view_load_uri(fixture->webView, uri_string); + g_free(uri_string); + + g_main_loop_run(fixture->loop); +} + +static void load_goback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); + + switch(status) { + case WEBKIT_LOAD_PROVISIONAL: + g_assert(!fixture->has_been_provisional); + fixture->has_been_provisional = TRUE; + break; + case WEBKIT_LOAD_COMMITTED: + g_assert(fixture->has_been_provisional); + fixture->has_been_committed = TRUE; + break; + case WEBKIT_LOAD_FAILED: + g_assert_not_reached(); + break; + case WEBKIT_LOAD_FINISHED: + g_assert(fixture->has_been_provisional); + g_assert(fixture->has_been_committed); + fixture->has_been_finished = TRUE; + g_main_loop_quit(fixture->loop); + break; + default: + break; + } +} + +static void load_wentback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object)); + char* uri_string; + char* uri_string2; + + uri_string = get_uri_for_path("/test_loading_status"); + uri_string2 = get_uri_for_path("/test_loading_status2"); + + switch(status) { + case WEBKIT_LOAD_PROVISIONAL: + g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string2); + break; + case WEBKIT_LOAD_COMMITTED: + g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string); + break; + case WEBKIT_LOAD_FAILED: + g_assert_not_reached(); + break; + case WEBKIT_LOAD_FINISHED: + g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string); + g_main_loop_quit(fixture->loop); + break; + default: + break; + } + + g_free(uri_string); + g_free(uri_string2); +} + +static void load_error_test(WebKitWebView* webview, WebKitWebFrame* frame, const char* uri, GError* error) +{ + g_debug("Error: %s", error->message); +} + +static void test_loading_goback(WebLoadingFixture* fixture, gconstpointer data) +{ + char* uri_string; + + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_goback_status_changed_cb), fixture); + + g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_test), fixture); + + uri_string = get_uri_for_path("/test_loading_status"); + webkit_web_view_load_uri(fixture->webView, uri_string); + g_free(uri_string); + + g_main_loop_run(fixture->loop); + + fixture->has_been_provisional = FALSE; + fixture->has_been_committed = FALSE; + fixture->has_been_first_visually_non_empty_layout = FALSE; + fixture->has_been_finished = FALSE; + fixture->has_been_failed = FALSE; + fixture->has_been_load_error = FALSE; + + uri_string = get_uri_for_path("/test_loading_status2"); + webkit_web_view_load_uri(fixture->webView, uri_string); + g_free(uri_string); + + g_main_loop_run(fixture->loop); + + g_signal_handlers_disconnect_by_func(fixture->webView, load_goback_status_changed_cb, fixture); + + fixture->has_been_provisional = FALSE; + fixture->has_been_committed = FALSE; + fixture->has_been_first_visually_non_empty_layout = FALSE; + fixture->has_been_finished = FALSE; + fixture->has_been_failed = FALSE; + fixture->has_been_load_error = FALSE; + + g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_wentback_status_changed_cb), fixture); + webkit_web_view_go_back(fixture->webView); + + g_main_loop_run(fixture->loop); + + g_signal_handlers_disconnect_by_func(fixture->webView, load_wentback_status_changed_cb, fixture); +} + +int main(int argc, char** argv) +{ + SoupServer* server; + + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); + soup_server_run_async(server); + + soup_server_add_handler(server, NULL, server_callback, NULL, NULL); + + base_uri = soup_uri_new("http://127.0.0.1/"); + soup_uri_set_port(base_uri, soup_server_get_port(server)); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add("/webkit/loading/status", + WebLoadingFixture, NULL, + web_loading_fixture_setup, + test_loading_status, + web_loading_fixture_teardown); + g_test_add("/webkit/loading/error", + WebLoadingFixture, NULL, + web_loading_fixture_setup, + test_loading_error, + web_loading_fixture_teardown); + g_test_add("/webkit/loading/cancelled", + WebLoadingFixture, NULL, + web_loading_fixture_setup, + test_loading_cancelled, + web_loading_fixture_teardown); + g_test_add("/webkit/loading/goback", + WebLoadingFixture, NULL, + web_loading_fixture_setup, + test_loading_goback, + web_loading_fixture_teardown); + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testmimehandling.c b/Source/WebKit/gtk/tests/testmimehandling.c new file mode 100644 index 0000000..41e170a --- /dev/null +++ b/Source/WebKit/gtk/tests/testmimehandling.c @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo + * Copyright (C) 2009 Gustavo Noronha Silva + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <glib.h> +#include <glib/gstdio.h> +#include <libsoup/soup.h> +#include <string.h> +#include <webkit/webkit.h> +#include <unistd.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +GMainLoop* loop; +SoupSession *session; +char* base_uri; + +/* For real request testing */ +static void +server_callback(SoupServer *server, SoupMessage *msg, + const char *path, GHashTable *query, + SoupClientContext *context, gpointer data) +{ + if (msg->method != SOUP_METHOD_GET) { + soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + soup_message_set_status(msg, SOUP_STATUS_OK); + + /* PDF */ + if (g_str_equal(path, "/pdf")) { + char* contents; + gsize length; + GError* error = NULL; + + g_file_get_contents("test.pdf", &contents, &length, &error); + g_assert(!error); + + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length); + } else if (g_str_equal(path, "/html")) { + char* contents; + gsize length; + GError* error = NULL; + + g_file_get_contents("test.html", &contents, &length, &error); + g_assert(!error); + + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length); + } else if (g_str_equal(path, "/text")) { + char* contents; + gsize length; + GError* error = NULL; + + soup_message_headers_append(msg->response_headers, "Content-Disposition", "attachment; filename=test.txt"); + + g_file_get_contents("test.txt", &contents, &length, &error); + g_assert(!error); + + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length); + } else if (g_str_equal(path, "/ogg")) { + char* contents; + gsize length; + GError* error = NULL; + + g_file_get_contents("test.ogg", &contents, &length, &error); + g_assert(!error); + + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length); + } + + soup_message_body_complete(msg->response_body); +} + +static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED || + webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED) + g_main_loop_quit(loop); +} + +static gboolean mime_type_policy_decision_requested_cb(WebKitWebView* view, WebKitWebFrame* frame, + WebKitNetworkRequest* request, const char* mime_type, + WebKitWebPolicyDecision* decision, gpointer data) +{ + char* type = (char*)data; + + if (g_str_equal(type, "pdf")) { + g_assert_cmpstr(mime_type, ==, "application/pdf"); + g_assert(!webkit_web_view_can_show_mime_type(view, mime_type)); + } else if (g_str_equal(type, "html")) { + g_assert_cmpstr(mime_type, ==, "text/html"); + g_assert(webkit_web_view_can_show_mime_type(view, mime_type)); + } else if (g_str_equal(type, "text")) { + WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame); + SoupMessage* message = webkit_network_response_get_message(response); + char* disposition; + + g_assert(message); + soup_message_headers_get_content_disposition(message->response_headers, + &disposition, NULL); + g_object_unref(response); + + g_assert_cmpstr(disposition, ==, "attachment"); + g_free(disposition); + + g_assert_cmpstr(mime_type, ==, "text/plain"); + g_assert(webkit_web_view_can_show_mime_type(view, mime_type)); + } else if (g_str_equal(type, "ogg")) { + g_assert_cmpstr(mime_type, ==, "audio/x-vorbis+ogg"); + g_assert(webkit_web_view_can_show_mime_type(view, mime_type)); + } + + g_free(type); + + return FALSE; +} + +static void testRemoteMimeType(const void* data) +{ + const char* name = (const char*) data; + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(G_OBJECT(view)); + + loop = g_main_loop_new(NULL, TRUE); + + g_object_connect(G_OBJECT(view), + "signal::notify::load-status", idle_quit_loop_cb, NULL, + "signal::mime-type-policy-decision-requested", mime_type_policy_decision_requested_cb, g_strdup(name), + NULL); + + char* effective_uri = g_strdup_printf("%s%s", base_uri, name); + webkit_web_view_load_uri(view, effective_uri); + g_free(effective_uri); + + g_main_loop_run(loop); + + g_object_unref(view); +} + +static void testLocalMimeType(const void* data) +{ + const char* typeName = (const char*) data; + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(G_OBJECT(view)); + + loop = g_main_loop_new(NULL, TRUE); + + g_object_connect(G_OBJECT(view), + "signal::notify::load-status", idle_quit_loop_cb, NULL, + "signal::mime-type-policy-decision-requested", mime_type_policy_decision_requested_cb, g_strdup(typeName), + NULL); + + gchar* filename = g_strdup_printf("test.%s", typeName); + GFile* file = g_file_new_for_path(filename); + g_free(filename); + + gchar* fileURI = g_file_get_uri(file); + g_object_unref(file); + + webkit_web_view_load_uri(view, fileURI); + g_free(fileURI); + + g_main_loop_run(loop); + g_object_unref(view); +} + +int main(int argc, char** argv) +{ + SoupServer* server; + SoupURI* soup_uri; + + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + /* Hopefully make test independent of the path it's called from. */ + testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]); + + server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); + soup_server_run_async(server); + + soup_server_add_handler(server, NULL, server_callback, NULL, NULL); + + soup_uri = soup_uri_new("http://127.0.0.1/"); + soup_uri_set_port(soup_uri, soup_server_get_port(server)); + + base_uri = soup_uri_to_string(soup_uri, FALSE); + soup_uri_free(soup_uri); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_data_func("/webkit/mime/remote-PDF", "pdf", testRemoteMimeType); + g_test_add_data_func("/webkit/mime/remote-HTML", "html", testRemoteMimeType); + g_test_add_data_func("/webkit/mime/remote-TEXT", "text", testRemoteMimeType); + g_test_add_data_func("/webkit/mime/remote-OGG", "ogg", testRemoteMimeType); + g_test_add_data_func("/webkit/mime/local-PDF", "pdf", testLocalMimeType); + g_test_add_data_func("/webkit/mime/local-HTML", "html", testLocalMimeType); + g_test_add_data_func("/webkit/mime/local-TEXT", "text", testLocalMimeType); + g_test_add_data_func("/webkit/mime/local-OGG", "ogg", testLocalMimeType); + + return g_test_run(); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testnetworkrequest.c b/Source/WebKit/gtk/tests/testnetworkrequest.c new file mode 100644 index 0000000..fb6ec41 --- /dev/null +++ b/Source/WebKit/gtk/tests/testnetworkrequest.c @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2009 Gustavo Noronha Silva + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <stdlib.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static void test_network_request_create_destroy() +{ + WebKitNetworkRequest* request; + SoupMessage* message; + + /* Test creation with URI */ + request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", "http://debian.org/", NULL)); + g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); + message = webkit_network_request_get_message(request); + g_assert(!message); + g_object_unref(request); + + /* Test creation with SoupMessage */ + message = soup_message_new("GET", "http://debian.org/"); + request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL)); + g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); + g_object_unref(request); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); + g_object_unref(message); + + /* Test creation with both SoupMessage and URI */ + message = soup_message_new("GET", "http://debian.org/"); + request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, "uri", "http://gnome.org/", NULL)); + g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); + g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://gnome.org/"); + g_object_unref(request); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); + g_object_unref(message); +} + +static void test_network_request_properties() +{ + WebKitNetworkRequest* request; + SoupMessage* message; + gchar* soupURI; + + /* Test URI is set correctly when creating with URI */ + request = webkit_network_request_new("http://debian.org/"); + g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); + g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/"); + g_object_unref(request); + + /* Test URI is set correctly when creating with Message */ + message = soup_message_new("GET", "http://debian.org/"); + request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL)); + g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); + g_object_unref(message); + + message = webkit_network_request_get_message(request); + soupURI = soup_uri_to_string(soup_message_get_uri(message), FALSE); + g_assert_cmpstr(soupURI, ==, "http://debian.org/"); + g_free(soupURI); + + g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/"); + g_object_unref(request); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/networkrequest/createdestroy", test_network_request_create_destroy); + g_test_add_func("/webkit/networkrequest/properties", test_network_request_properties); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testnetworkresponse.c b/Source/WebKit/gtk/tests/testnetworkresponse.c new file mode 100644 index 0000000..90062c6 --- /dev/null +++ b/Source/WebKit/gtk/tests/testnetworkresponse.c @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2009 Gustavo Noronha Silva + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <stdlib.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static void test_network_response_create_destroy() +{ + WebKitNetworkResponse* response; + SoupMessage* message; + + /* Test creation with URI */ + response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", "http://debian.org/", NULL)); + g_assert(WEBKIT_IS_NETWORK_RESPONSE(response)); + message = webkit_network_response_get_message(response); + g_assert(!message); + g_object_unref(response); + + /* Test creation with SoupMessage */ + message = soup_message_new("GET", "http://debian.org/"); + response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, NULL)); + g_assert(WEBKIT_IS_NETWORK_RESPONSE(response)); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); + g_object_unref(response); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); + g_object_unref(message); + + /* Test creation with both SoupMessage and URI */ + message = soup_message_new("GET", "http://debian.org/"); + response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, "uri", "http://gnome.org/", NULL)); + g_assert(WEBKIT_IS_NETWORK_RESPONSE(response)); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); + g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://gnome.org/"); + g_object_unref(response); + g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); + g_object_unref(message); +} + +static void test_network_response_properties() +{ + WebKitNetworkResponse* response; + SoupMessage* message; + gchar* soupURI; + + /* Test URI is set correctly when creating with URI */ + response = webkit_network_response_new("http://debian.org/"); + g_assert(WEBKIT_IS_NETWORK_RESPONSE(response)); + g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://debian.org/"); + g_object_unref(response); + + /* Test URI is set correctly when creating with Message */ + message = soup_message_new("GET", "http://debian.org/"); + response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, NULL)); + g_assert(WEBKIT_IS_NETWORK_RESPONSE(response)); + g_object_unref(message); + + message = webkit_network_response_get_message(response); + soupURI = soup_uri_to_string(soup_message_get_uri(message), FALSE); + g_assert_cmpstr(soupURI, ==, "http://debian.org/"); + g_free(soupURI); + + g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://debian.org/"); + g_object_unref(response); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/networkresponse/createdestroy", test_network_response_create_destroy); + g_test_add_func("/webkit/networkresponse/properties", test_network_response_properties); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebbackforwardlist.c b/Source/WebKit/gtk/tests/testwebbackforwardlist.c new file mode 100644 index 0000000..b9e395e --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebbackforwardlist.c @@ -0,0 +1,337 @@ +/* + * Copyright (C) 2008 Holger Hans Peter Freyther + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static void test_webkit_web_history_item_lifetime(void) +{ + WebKitWebView* webView; + WebKitWebBackForwardList* backForwardList; + WebKitWebHistoryItem* currentItem; + WebKitWebHistoryItem* forwardItem; + WebKitWebHistoryItem* backItem; + WebKitWebHistoryItem* nthItem; + WebKitWebHistoryItem* item1; + WebKitWebHistoryItem* item2; + WebKitWebHistoryItem* item3; + WebKitWebHistoryItem* item4; + GList* backList = NULL; + GList* forwardList = NULL; + g_test_bug("19898"); + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + backForwardList = webkit_web_view_get_back_forward_list(webView); + g_assert_cmpint(G_OBJECT(backForwardList)->ref_count, ==, 1); + + /* add test items */ + item1 = webkit_web_history_item_new_with_data("http://example.com/1/", "Site 1"); + webkit_web_back_forward_list_add_item(backForwardList, item1); + g_object_unref(item1); + + item2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Site 2"); + webkit_web_back_forward_list_add_item(backForwardList, item2); + g_object_unref(item2); + + item3 = webkit_web_history_item_new_with_data("http://example.com/3/", "Site 3"); + webkit_web_back_forward_list_add_item(backForwardList, item3); + g_object_unref(item3); + + item4 = webkit_web_history_item_new_with_data("http://example.com/4/", "Site 4"); + webkit_web_back_forward_list_add_item(backForwardList, item4); + g_object_unref(item4); + + /* make sure these functions don't add unnecessary ref to the history item */ + backItem = webkit_web_back_forward_list_get_back_item(backForwardList); + g_object_ref(backItem); + g_assert_cmpint(G_OBJECT(backItem)->ref_count, ==, 2); + g_object_unref(backItem); + g_assert_cmpint(G_OBJECT(backItem)->ref_count, ==, 1); + + currentItem = webkit_web_back_forward_list_get_current_item(backForwardList); + g_object_ref(currentItem); + g_assert_cmpint(G_OBJECT(currentItem)->ref_count, ==, 2); + g_object_unref(currentItem); + g_assert_cmpint(G_OBJECT(currentItem)->ref_count, ==, 1); + + webkit_web_back_forward_list_go_to_item(backForwardList, item2); + forwardItem = webkit_web_back_forward_list_get_forward_item(backForwardList); + g_object_ref(forwardItem); + g_assert_cmpint(G_OBJECT(forwardItem)->ref_count, ==, 2); + g_object_unref(forwardItem); + g_assert_cmpint(G_OBJECT(forwardItem)->ref_count, ==, 1); + + nthItem = webkit_web_back_forward_list_get_nth_item(backForwardList, 1); + g_object_ref(nthItem); + g_assert_cmpint(G_OBJECT(nthItem)->ref_count, ==, 2); + g_object_unref(nthItem); + g_assert_cmpint(G_OBJECT(nthItem)->ref_count, ==, 1); + + backList = webkit_web_back_forward_list_get_back_list_with_limit(backForwardList, 5); + for (; backList; backList = backList->next) + g_assert_cmpint(G_OBJECT(backList->data)->ref_count, ==, 1); + + forwardList = webkit_web_back_forward_list_get_forward_list_with_limit(backForwardList, 5); + for (; forwardList; forwardList = forwardList->next) + g_assert_cmpint(G_OBJECT(forwardList->data)->ref_count, ==, 1); + + g_list_free(forwardList); + g_list_free(backList); + g_assert_cmpint(G_OBJECT(item1)->ref_count, ==, 1); + g_assert_cmpint(G_OBJECT(item2)->ref_count, ==, 1); + g_assert_cmpint(G_OBJECT(item3)->ref_count, ==, 1); + g_assert_cmpint(G_OBJECT(item4)->ref_count, ==, 1); + g_assert_cmpint(G_OBJECT(backForwardList)->ref_count, ==, 1); + g_object_unref(webView); +} + +static void test_webkit_web_back_forward_list_order(void) +{ + WebKitWebView* webView; + WebKitWebBackForwardList* webBackForwardList; + WebKitWebHistoryItem* item1; + WebKitWebHistoryItem* item2; + WebKitWebHistoryItem* item3; + WebKitWebHistoryItem* item4; + WebKitWebHistoryItem* currentItem; + GList* backList = NULL; + GList* forwardList = NULL; + g_test_bug("22694"); + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + + webkit_web_view_set_maintains_back_forward_list(webView, TRUE); + webBackForwardList = webkit_web_view_get_back_forward_list(webView); + g_assert(webBackForwardList); + + // Check that there is no item. + g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + // Add a new items + item1 = webkit_web_history_item_new_with_data("http://example.com/1/", "Site 1"); + webkit_web_back_forward_list_add_item(webBackForwardList, item1); + g_object_unref(item1); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item1)); + + item2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Site 2"); + webkit_web_back_forward_list_add_item(webBackForwardList, item2); + g_object_unref(item2); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item2)); + + item3 = webkit_web_history_item_new_with_data("http://example.com/3/", "Site 3"); + webkit_web_back_forward_list_add_item(webBackForwardList, item3); + g_object_unref(item3); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item3)); + + item4 = webkit_web_history_item_new_with_data("http://example.com/4/", "Site 4"); + webkit_web_back_forward_list_add_item(webBackForwardList, item4); + g_object_unref(item4); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item4)); + + // check the back list order + backList = webkit_web_back_forward_list_get_back_list_with_limit(webBackForwardList, 5); + g_assert(backList); + + currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3"); + backList = backList->next; + + currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2"); + backList = backList->next; + + currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/1/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 1"); + g_list_free(backList); + + // check the forward list order + g_assert(webkit_web_view_go_to_back_forward_item(webView, item1)); + forwardList = webkit_web_back_forward_list_get_forward_list_with_limit(webBackForwardList,5); + g_assert(forwardList); + + currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/4/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 4"); + forwardList = forwardList->next; + + currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3"); + forwardList = forwardList->next; + + currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2"); + + g_list_free(forwardList); + g_object_unref(webView); +} + +static void test_webkit_web_back_forward_list_add_item(void) +{ + WebKitWebView* webView; + WebKitWebBackForwardList* webBackForwardList; + WebKitWebHistoryItem* addItem1; + WebKitWebHistoryItem* addItem2; + WebKitWebHistoryItem* backItem; + WebKitWebHistoryItem* currentItem; + g_test_bug("22988"); + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + + webkit_web_view_set_maintains_back_forward_list(webView, TRUE); + webBackForwardList = webkit_web_view_get_back_forward_list(webView); + g_assert(webBackForwardList); + + // Check that there is no item. + g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + // Add a new item + addItem1 = webkit_web_history_item_new_with_data("http://example.com/", "Added site"); + webkit_web_back_forward_list_add_item(webBackForwardList, addItem1); + g_object_unref(addItem1); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem1)); + + // Check that the added item is the current item. + currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList); + g_assert(currentItem); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site"); + + // Add another item. + addItem2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Added site 2"); + webkit_web_back_forward_list_add_item(webBackForwardList, addItem2); + g_object_unref(addItem2); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem2)); + + // Check that the added item is new current item. + currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList); + g_assert(currentItem); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 1); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(webkit_web_view_can_go_back(webView)); + g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); + g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site 2"); + + backItem = webkit_web_back_forward_list_get_back_item(webBackForwardList); + g_assert(backItem); + g_assert_cmpstr(webkit_web_history_item_get_uri(backItem), ==, "http://example.com/"); + g_assert_cmpstr(webkit_web_history_item_get_title(backItem), ==, "Added site"); + + // Go to the first added item. + g_assert(webkit_web_view_go_to_back_forward_item(webView, addItem1)); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 1); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + g_object_unref(webView); +} + +static void test_webkit_web_back_forward_list_clear(void) +{ + WebKitWebView* webView; + WebKitWebBackForwardList* webBackForwardList; + WebKitWebHistoryItem* addItem; + g_test_bug("36173"); + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + + webBackForwardList = webkit_web_view_get_back_forward_list(webView); + g_assert(webBackForwardList); + + // Check that there is no item. + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + // Check that clearing the empty list does not modify counters + webkit_web_back_forward_list_clear(webBackForwardList); + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + // Add a new item + addItem = webkit_web_history_item_new_with_data("http://example.com/", "Added site"); + webkit_web_back_forward_list_add_item(webBackForwardList, addItem); + g_object_unref(addItem); + g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem)); + + // Check that after clearing the list the added item is no longer in the list + webkit_web_back_forward_list_clear(webBackForwardList); + g_assert(!webkit_web_back_forward_list_contains_item(webBackForwardList, addItem)); + + // Check that after clearing it, the list is empty + g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); + g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); + g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); + g_assert(!webkit_web_view_can_go_forward(webView)); + g_assert(!webkit_web_view_can_go_back(webView)); + + g_object_unref(webView); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/webbackforwardlist/add_item", test_webkit_web_back_forward_list_add_item); + g_test_add_func("/webkit/webbackforwardlist/list_order", test_webkit_web_back_forward_list_order); + g_test_add_func("/webkit/webhistoryitem/lifetime", test_webkit_web_history_item_lifetime); + g_test_add_func("/webkit/webbackforwardlist/clear", test_webkit_web_back_forward_list_clear); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebdatasource.c b/Source/WebKit/gtk/tests/testwebdatasource.c new file mode 100644 index 0000000..96d95e4 --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebdatasource.c @@ -0,0 +1,253 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static const gshort defaultTimeout = 10; +guint waitTimer; +gboolean shouldWait; + +typedef struct { + WebKitWebView* webView; + WebKitWebFrame* mainFrame; +} WebDataSourceFixture; + +static void test_webkit_web_data_source_get_initial_request() +{ + WebKitWebView* view; + WebKitWebFrame* frame; + WebKitWebDataSource* dataSource; + WebKitNetworkRequest* initialRequest; + + view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(view); + frame = webkit_web_view_get_main_frame(view); + + WebKitNetworkRequest* request = webkit_network_request_new("http://www.google.com"); + webkit_web_frame_load_request(frame, request); + g_object_unref(request); + + dataSource = webkit_web_frame_get_provisional_data_source(frame); + g_assert(dataSource); + initialRequest = webkit_web_data_source_get_initial_request(dataSource); + g_assert_cmpstr(webkit_network_request_get_uri(initialRequest), ==, "http://www.google.com/"); + + g_object_unref(view); +} + +static void notify_load_status_unreachable_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status (view); + WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); + + g_assert(status != WEBKIT_LOAD_FINISHED); + + if (status != WEBKIT_LOAD_FAILED) + return; + + WebKitWebDataSource* datasource = webkit_web_frame_get_data_source(frame); + + g_assert_cmpstr("http://this.host.does.not.exist/doireallyexist.html", ==, + webkit_web_data_source_get_unreachable_uri(datasource)); + + g_main_loop_quit(loop); +} + +static void notify_load_status_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status (view); + WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); + WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame); + + if (status == WEBKIT_LOAD_COMMITTED) { + g_assert(webkit_web_data_source_is_loading(dataSource)); + return; + } + else if (status != WEBKIT_LOAD_FINISHED) + return; + + /* Test get_request */ + g_test_message("Testing webkit_web_data_source_get_request"); + WebKitNetworkRequest* request = webkit_web_data_source_get_request(dataSource); + g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://webkit.org/"); + + /* Test get_main_resource */ + g_test_message("Testing webkit_web_data_source_get_main_resource"); + WebKitWebResource* resource = webkit_web_data_source_get_main_resource(dataSource); + g_assert_cmpstr("text/html", ==, webkit_web_resource_get_mime_type(resource)); + g_assert_cmpstr("http://webkit.org/", ==, webkit_web_resource_get_uri(resource)); + + /* Test get_data. We just test if data has certain size for the mean time */ + g_test_message("Testing webkit_web_data_source_get_data has certain size"); + GString* data = webkit_web_data_source_get_data(dataSource); + g_assert(data->len > 100); + + /* FIXME: Add test for get_encoding */ + + g_main_loop_quit(loop); +} + +static gboolean wait_timer_fired(GMainLoop* loop) +{ + waitTimer = 0; + g_main_loop_quit(loop); + + return FALSE; +} + +static void test_webkit_web_data_source() +{ + WebKitWebView* view; + GMainLoop* loop; + + view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(view); + loop = g_main_loop_new(NULL, TRUE); + g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_cb), loop); + webkit_web_view_load_uri(view, "http://webkit.org"); + + waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); + + g_main_loop_run(loop); + + if (waitTimer) + g_source_remove(waitTimer); + + waitTimer = 0; + + g_main_loop_unref(loop); + g_object_unref(view); +} + +static void notify_load_status_lifetime_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop) +{ + WebKitLoadStatus status = webkit_web_view_get_load_status (view); + WebKitWebFrame* frame = webkit_web_view_get_main_frame(view); + WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame); + + if (status == WEBKIT_LOAD_COMMITTED) { + g_assert(webkit_web_data_source_is_loading(dataSource)); + return; + } else if (status != WEBKIT_LOAD_FINISHED) + return; + + g_main_loop_quit(loop); +} + +static void test_webkit_web_data_source_lifetime() +{ + WebKitWebView* view; + GMainLoop* loop; + + view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(view); + loop = g_main_loop_new(NULL, TRUE); + g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_lifetime_cb), loop); + webkit_web_view_load_uri(view, "http://webkit.org"); + + waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); + + g_main_loop_run(loop); + + WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(webkit_web_view_get_main_frame(view)); + GList* subResources = webkit_web_data_source_get_subresources(dataSource); + gint numberOfResources = g_list_length(subResources); + g_list_free(subResources); + + g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FINISHED); + + webkit_web_view_load_uri(view, "http://gnome.org"); + + g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_PROVISIONAL); + + webkit_web_view_stop_loading(view); + + g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FAILED); + + subResources = webkit_web_data_source_get_subresources(dataSource); + g_assert_cmpint(numberOfResources, ==, g_list_length(subResources)); + g_list_free(subResources); + + if (waitTimer) + g_source_remove(waitTimer); + + waitTimer = 0; + + g_main_loop_unref(loop); + g_object_unref(view); +} + +static void test_webkit_web_data_source_unreachable_uri() +{ + /* FIXME: this test fails currently. */ + return; + + WebKitWebView* view; + GMainLoop* loop; + + view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(view); + loop = g_main_loop_new(NULL, TRUE); + g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_unreachable_cb), loop); + webkit_web_view_load_uri(view, "http://this.host.does.not.exist/doireallyexist.html"); + + waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop); + + g_main_loop_run(loop); + + if (waitTimer) + g_source_remove(waitTimer); + + waitTimer = 0; + + g_main_loop_unref(loop); + g_object_unref(view); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_bug("24758"); + g_test_add_func("/webkit/webdatasource/get_initial_request", + test_webkit_web_data_source_get_initial_request); + g_test_add_func("/webkit/webdatasource/api", + test_webkit_web_data_source); + g_test_add_func("/webkit/webdatasource/unreachable_uri", + test_webkit_web_data_source_unreachable_uri); + g_test_add_func("/webkit/webdatasource/lifetime", + test_webkit_web_data_source_lifetime); + + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebframe.c b/Source/WebKit/gtk/tests/testwebframe.c new file mode 100644 index 0000000..d1ff7ea --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebframe.c @@ -0,0 +1,231 @@ +/* + * Copyright (C) 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <unistd.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static int numberOfFramesCreated = 0; + +static void createFrameSignalTestFrameCreatedCallback(WebKitWebView* webView, WebKitWebFrame* frame, gpointer data) +{ + numberOfFramesCreated++; +} + +static gboolean createFrameSignalTestTimeout(gpointer data) +{ + g_assert_cmpint(numberOfFramesCreated, ==, 2); + g_main_loop_quit((GMainLoop*) data); + return FALSE; +} + +static void test_webkit_web_frame_created_signal(void) +{ + GtkWidget* webView; + GtkWidget* window; + GMainLoop* loop = g_main_loop_new(NULL, TRUE); + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + + webView = webkit_web_view_new(); + g_signal_connect(webView, "frame-created", G_CALLBACK(createFrameSignalTestFrameCreatedCallback), loop); + + // We want to ensure that exactly two create-frame signals are + // fired and no more, so we set a timeout here. There does not appear + // to be a simple way via the API to figure out when all frames have + // loaded. + g_timeout_add(500, createFrameSignalTestTimeout, loop); + + gtk_container_add(GTK_CONTAINER(window), webView); + gtk_widget_show(window); + gtk_widget_show(webView); + + webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView), + "<html><body>Frames!" + "<iframe></iframe>" + "<iframe></iframe>" + "</body></html>", + "text/html", "utf-8", "file://"); + g_main_loop_run(loop); +} + +static void test_webkit_web_frame_create_destroy(void) +{ + GtkWidget *webView; + GtkWidget *window; + + g_test_bug("21837"); + webView = webkit_web_view_new(); + g_object_ref_sink(webView); + g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); + // This crashed with the original version + g_object_unref(webView); + + g_test_bug("25042"); + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + webView = webkit_web_view_new(); + gtk_container_add(GTK_CONTAINER(window), webView); + gtk_widget_show(window); + gtk_widget_show(webView); + gtk_widget_destroy(webView); +} + +static void test_webkit_web_frame_lifetime(void) +{ + WebKitWebView* webView; + WebKitWebFrame* webFrame; + g_test_bug("21837"); + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); + webFrame = webkit_web_view_get_main_frame(webView); + g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1); + + // Add dummy reference on the WebKitWebFrame to keep it alive + g_object_ref(webFrame); + g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 2); + + // This crashed with the original version + g_object_unref(webView); + + // Make sure that the frame got deleted as well. We did this + // by adding an extra ref on the WebKitWebFrame and we should + // be the one holding the last reference. + g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1); + g_object_unref(webFrame); +} + +static gboolean print_requested_cb(WebKitWebView* webView, WebKitWebFrame* webFrame, GMainLoop* loop) +{ + g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(TRUE)); + g_main_loop_quit(loop); + return TRUE; +} + +static void print_timeout(GMainLoop* loop) +{ + if (g_main_loop_is_running(loop)) + g_main_loop_quit(loop); +} + +static void test_webkit_web_frame_printing(void) +{ + WebKitWebView* webView; + + webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(webView); + g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1); + + webkit_web_view_load_string(webView, + "<html><body><h1>WebKitGTK+!</h1></body></html>", + "text/html", + "utf-8", + "file://"); + + GMainLoop* loop = g_main_loop_new(NULL, TRUE); + + // Does javascript print() work correctly? + g_signal_connect(webView, "print-requested", + G_CALLBACK(print_requested_cb), + loop); + + g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(FALSE)); + webkit_web_view_execute_script (webView, "print();"); + + // Give javascriptcore some time to process the print request, but + // prepare a timeout to avoid it running forever in case the signal is + // never emitted. + g_timeout_add(1000, (GSourceFunc)print_timeout, loop); + g_main_loop_run(loop); + + g_assert_cmpint(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(webView), "signal-handled")), ==, TRUE); + + // Does printing directly to a file? + GError *error = NULL; + gchar* temporaryFilename = NULL; + gint fd = g_file_open_tmp ("webkit-testwebframe-XXXXXX", &temporaryFilename, &error); + close(fd); + + if (error) { + g_critical("Failed to open a temporary file for writing: %s.", error->message); + g_error_free(error); + goto cleanup; + } + + // We delete the file, so that we can easily figure out that the + // file got printed; + if (g_unlink(temporaryFilename) == -1) { + g_warning("Failed to delete the temporary file: %s.\nThis may cause the test to be bogus.", g_strerror(errno)); + } + + WebKitWebFrame* webFrame = webkit_web_view_get_main_frame(webView); + GtkPrintOperation* operation = gtk_print_operation_new(); + GtkPrintOperationAction action = GTK_PRINT_OPERATION_ACTION_EXPORT; + GtkPrintOperationResult result; + + gtk_print_operation_set_export_filename(operation, temporaryFilename); + result = webkit_web_frame_print_full (webFrame, operation, action, NULL); + + g_assert_cmpint(result, ==, GTK_PRINT_OPERATION_RESULT_APPLY); + g_assert_cmpint(g_file_test(temporaryFilename, G_FILE_TEST_IS_REGULAR), ==, TRUE); + + g_unlink(temporaryFilename); + g_object_unref(operation); +cleanup: + g_object_unref(webView); + g_free(temporaryFilename); +} + +static void test_webkit_web_frame_response() +{ + WebKitWebFrame* frame = g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL); + WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame); + g_assert(!response); + g_object_unref(frame); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/webview/create_destroy", test_webkit_web_frame_create_destroy); + g_test_add_func("/webkit/webview/frame-created_signal", test_webkit_web_frame_created_signal); + g_test_add_func("/webkit/webframe/lifetime", test_webkit_web_frame_lifetime); + g_test_add_func("/webkit/webview/printing", test_webkit_web_frame_printing); + g_test_add_func("/webkit/webview/response", test_webkit_web_frame_response); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebhistoryitem.c b/Source/WebKit/gtk/tests/testwebhistoryitem.c new file mode 100644 index 0000000..362dc98 --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebhistoryitem.c @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +typedef struct { + WebKitWebHistoryItem* item; +} WebHistoryItemFixture; + +static void web_history_item_fixture_setup(WebHistoryItemFixture* fixture, + gconstpointer data) +{ + fixture->item = webkit_web_history_item_new_with_data("http://example.com/", "Example1"); + g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, == , 1); + g_assert(fixture->item != NULL); +} + +static void web_history_item_fixture_teardown(WebHistoryItemFixture* fixture, + gconstpointer data) +{ + g_assert(fixture->item != NULL); + g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, ==, 1); +} + +static void test_webkit_web_history_item_get_data(WebHistoryItemFixture* fixture, + gconstpointer data) +{ + g_assert_cmpstr(webkit_web_history_item_get_title(fixture->item), ==, "Example1"); + g_assert_cmpstr(webkit_web_history_item_get_uri(fixture->item), ==, "http://example.com/"); +} + +static void test_webkit_web_history_item_alternate_title(WebHistoryItemFixture* fixture, + gconstpointer data) +{ + webkit_web_history_item_set_alternate_title(fixture->item, "Alternate title"); + g_assert_cmpstr(webkit_web_history_item_get_alternate_title(fixture->item), ==, "Alternate title"); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add("/webkit/webhistoryitem/get_data", + WebHistoryItemFixture, 0, web_history_item_fixture_setup, + test_webkit_web_history_item_get_data, web_history_item_fixture_teardown); + g_test_add("/webkit/webhistoryitem/alternate_title", + WebHistoryItemFixture, 0, web_history_item_fixture_setup, + test_webkit_web_history_item_alternate_title, web_history_item_fixture_teardown); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebplugindatabase.c b/Source/WebKit/gtk/tests/testwebplugindatabase.c new file mode 100644 index 0000000..1366f84 --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebplugindatabase.c @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <errno.h> +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +/* This function is not public, so we need an extern declaration */ +extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory); + +static void test_webkit_web_plugin_database_get_plugins() +{ + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + WebKitWebPluginDatabase* database; + GSList* pluginList, *p; + gboolean found = FALSE; + gboolean enabled = FALSE; + + webkit_web_settings_add_extra_plugin_directory(view, TEST_PLUGIN_DIR); + g_object_ref_sink(G_OBJECT(view)); + + database = webkit_get_web_plugin_database(); + pluginList = webkit_web_plugin_database_get_plugins(database); + for (p = pluginList; p; p = p->next) { + WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data; + if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") && + !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit")) { + found = TRUE; + enabled = webkit_web_plugin_get_enabled(plugin); + webkit_web_plugin_set_enabled(plugin, FALSE); + } + } + webkit_web_plugin_database_plugins_list_free(pluginList); + g_assert(found); + g_assert(enabled); + + webkit_web_plugin_database_refresh(database); + pluginList = webkit_web_plugin_database_get_plugins(database); + + for (p = pluginList; p; p = p->next) { + WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data; + if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") && + !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit")) + enabled = webkit_web_plugin_get_enabled(plugin); + } + webkit_web_plugin_database_plugins_list_free(pluginList); + g_assert(!enabled); + + g_object_unref(view); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/webplugindatabase/getplugins", test_webkit_web_plugin_database_get_plugins); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need at least gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebresource.c b/Source/WebKit/gtk/tests/testwebresource.c new file mode 100644 index 0000000..1b893a9 --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebresource.c @@ -0,0 +1,342 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <gtk/gtk.h> +#include <libsoup/soup.h> +#include <string.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +#define INDEX_HTML "<html></html>" +#define MAIN_HTML "<html><head><script language=\"javascript\" src=\"/javascript.js\"></script></head><body><h1>hah</h1></html>" +#define JAVASCRIPT "function blah () { var a = 1; }" + +GMainLoop* loop; +SoupSession *session; +char *base_uri; +WebKitWebResource* main_resource; +WebKitWebResource* sub_resource; + +typedef struct { + WebKitWebResource* webResource; + WebKitWebView* webView; +} WebResourceFixture; + +/* For real request testing */ +static void +server_callback (SoupServer *server, SoupMessage *msg, + const char *path, GHashTable *query, + SoupClientContext *context, gpointer data) +{ + if (msg->method != SOUP_METHOD_GET) { + soup_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + soup_message_set_status (msg, SOUP_STATUS_OK); + + /* Redirect */ + if (g_str_equal (path, "/")) { + soup_message_set_status (msg, SOUP_STATUS_MOVED_PERMANENTLY); + + soup_message_headers_append (msg->response_headers, + "Location", "/index.html"); + } else if (g_str_equal (path, "/index.html")) { + soup_message_body_append (msg->response_body, + SOUP_MEMORY_COPY, + INDEX_HTML, + strlen (INDEX_HTML)); + } else if (g_str_equal (path, "/main.html")) { + soup_message_body_append (msg->response_body, + SOUP_MEMORY_COPY, + MAIN_HTML, + strlen (MAIN_HTML)); + } else if (g_str_equal (path, "/javascript.js")) { + soup_message_body_append (msg->response_body, + SOUP_MEMORY_COPY, + JAVASCRIPT, + strlen (JAVASCRIPT)); + } + + + soup_message_body_complete (msg->response_body); +} + +static void web_resource_fixture_setup(WebResourceFixture* fixture, gconstpointer data) +{ + fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(fixture->webView); + const gchar* webData = "<html></html>"; + fixture->webResource = webkit_web_resource_new(webData, strlen(webData), "http://example.com/", "text/html", "utf8", "Example.com"); + g_assert(fixture->webResource); +} + +static void web_resource_fixture_teardown(WebResourceFixture* fixture, gconstpointer data) +{ + g_assert(fixture->webResource); + g_object_unref(fixture->webResource); + g_object_unref(fixture->webView); +} + +static void test_webkit_web_resource_get_url(WebResourceFixture* fixture, gconstpointer data) +{ + gchar* url; + g_object_get(G_OBJECT(fixture->webResource), "uri", &url, NULL); + g_assert_cmpstr(url, ==, "http://example.com/"); + g_assert_cmpstr(webkit_web_resource_get_uri(fixture->webResource) ,==,"http://example.com/"); + g_free(url); +} + +static void test_webkit_web_resource_get_data(WebResourceFixture* fixture, gconstpointer data) +{ + GString* charData = webkit_web_resource_get_data(fixture->webResource); + g_assert_cmpstr(charData->str, ==, "<html></html>"); +} + +static void test_webkit_web_resource_get_mime_type(WebResourceFixture* fixture, gconstpointer data) +{ + gchar* mime_type; + g_object_get(G_OBJECT(fixture->webResource), "mime-type", &mime_type, NULL); + g_assert_cmpstr(mime_type, ==, "text/html"); + g_assert_cmpstr(webkit_web_resource_get_mime_type(fixture->webResource),==,"text/html"); + g_free(mime_type); +} + +static void test_webkit_web_resource_get_encoding(WebResourceFixture* fixture, gconstpointer data) +{ + gchar* text_encoding; + g_object_get(G_OBJECT(fixture->webResource), "encoding", &text_encoding, NULL); + g_assert_cmpstr(text_encoding, ==, "utf8"); + g_assert_cmpstr(webkit_web_resource_get_encoding(fixture->webResource),==,"utf8"); + g_free(text_encoding); +} + +static void test_webkit_web_resource_get_frame_name(WebResourceFixture* fixture, gconstpointer data) +{ + gchar* frame_name; + g_object_get(G_OBJECT(fixture->webResource), "frame-name", &frame_name, NULL); + g_assert_cmpstr(frame_name, ==, "Example.com"); + g_assert_cmpstr(webkit_web_resource_get_frame_name(fixture->webResource),==,"Example.com"); + g_free(frame_name); +} + +static void resource_request_starting_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebKitWebResource* web_resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response, gpointer data) +{ + gint* been_there = data; + *been_there = *been_there + 1; + + if (*been_there == 1) { + g_assert(!main_resource); + main_resource = g_object_ref(web_resource); + + g_assert_cmpstr(webkit_web_resource_get_uri(web_resource), ==, base_uri); + + /* This should be a redirect, so the response must be NULL */ + g_assert(!response); + } else if (*been_there == 2) { + char* uri = g_strdup_printf("%sindex.html", base_uri); + + g_assert_cmpstr(webkit_web_resource_get_uri(web_resource), ==, uri); + + /* Cancel the request. */ + webkit_network_request_set_uri(request, "about:blank"); + + g_free(uri); + } +} + +static void notify_load_status_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED) { + gboolean* been_there = data; + *been_there = TRUE; + + g_assert_cmpstr(webkit_web_view_get_uri(web_view), ==, "about:blank"); + + g_main_loop_quit(loop); + } +} + +static void test_web_resource_loading() +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + gint been_to_resource_request_starting = 0; + gboolean been_to_load_finished = FALSE; + WebKitWebFrame* web_frame; + WebKitWebDataSource* data_source; + + loop = g_main_loop_new(NULL, TRUE); + + g_object_ref_sink(web_view); + + g_signal_connect(web_view, "resource-request-starting", + G_CALLBACK(resource_request_starting_cb), + &been_to_resource_request_starting); + + g_signal_connect(web_view, "notify::load-status", + G_CALLBACK(notify_load_status_cb), + &been_to_load_finished); + + webkit_web_view_load_uri(web_view, base_uri); + + /* We won't get finished immediately, because of the redirect */ + g_main_loop_run(loop); + + web_frame = webkit_web_view_get_main_frame(web_view); + data_source = webkit_web_frame_get_data_source(web_frame); + + g_assert(main_resource); + g_assert(webkit_web_data_source_get_main_resource(data_source) == main_resource); + g_object_unref(main_resource); + + g_assert_cmpint(been_to_resource_request_starting, ==, 2); + g_assert_cmpint(been_to_load_finished, ==, TRUE); + + g_object_unref(web_view); + g_main_loop_unref(loop); +} + +static void resource_request_starting_sub_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebKitWebResource* web_resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response, gpointer data) +{ + if (!main_resource) + main_resource = g_object_ref(web_resource); + else if (!sub_resource) + sub_resource = g_object_ref(web_resource); +} + +static void notify_load_status_sub_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED) + g_main_loop_quit(loop); +} + +static gboolean idle_quit_loop_cb(gpointer data) +{ + g_main_loop_quit(loop); + return FALSE; +} + +static void test_web_resource_sub_resource_loading() +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + WebKitWebFrame* web_frame; + WebKitWebDataSource* data_source; + GList* sub_resources; + char* uri = g_strdup_printf("%smain.html", base_uri); + + main_resource = NULL; + + loop = g_main_loop_new(NULL, TRUE); + + g_object_ref_sink(web_view); + + g_signal_connect(web_view, "resource-request-starting", + G_CALLBACK(resource_request_starting_sub_cb), + NULL); + + g_signal_connect(web_view, "notify::load-status", + G_CALLBACK(notify_load_status_sub_cb), + NULL); + + webkit_web_view_load_uri(web_view, uri); + + g_main_loop_run(loop); + + /* The main resource should be loaded; now let's wait for the sub-resource to load */ + g_idle_add(idle_quit_loop_cb, NULL); + g_main_loop_run(loop); + + g_assert(main_resource && sub_resource); + g_assert(main_resource != sub_resource); + + web_frame = webkit_web_view_get_main_frame(web_view); + data_source = webkit_web_frame_get_data_source(web_frame); + + g_assert(webkit_web_data_source_get_main_resource(data_source) == main_resource); + g_object_unref(main_resource); + + sub_resources = webkit_web_data_source_get_subresources(data_source); + // Expected resources: javascripts.js, favicon.ico + g_assert(sub_resources); + g_assert(sub_resources->next); + g_assert(!sub_resources->next->next); + + // Test that the object we got from the data source is the same + // that went through resource-request-starting. Note that the order is + // not important (and not guaranteed since the resources are stored in a + // hashtable). + g_assert(WEBKIT_WEB_RESOURCE(sub_resources->data) == sub_resource + || WEBKIT_WEB_RESOURCE(sub_resources->next->data) == sub_resource); + + g_object_unref(web_view); + g_main_loop_unref(loop); +} + +int main(int argc, char** argv) +{ + SoupServer* server; + SoupURI* soup_uri; + + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); + soup_server_run_async(server); + + soup_server_add_handler(server, NULL, server_callback, NULL, NULL); + + soup_uri = soup_uri_new("http://127.0.0.1/"); + soup_uri_set_port(soup_uri, soup_server_get_port(server)); + + base_uri = soup_uri_to_string(soup_uri, FALSE); + soup_uri_free(soup_uri); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add("/webkit/webresource/get_url", + WebResourceFixture, 0, web_resource_fixture_setup, + test_webkit_web_resource_get_url, web_resource_fixture_teardown); + g_test_add("/webkit/webresource/get_mime_type", + WebResourceFixture, 0, web_resource_fixture_setup, + test_webkit_web_resource_get_mime_type, web_resource_fixture_teardown); + g_test_add("/webkit/webresource/get_text_encoding_name", + WebResourceFixture, 0, web_resource_fixture_setup, + test_webkit_web_resource_get_encoding, web_resource_fixture_teardown); + g_test_add("/webkit/webresource/get_frame_name", + WebResourceFixture, 0, web_resource_fixture_setup, + test_webkit_web_resource_get_frame_name, web_resource_fixture_teardown); + g_test_add("/webkit/webresource/get_data", + WebResourceFixture, 0, web_resource_fixture_setup, + test_webkit_web_resource_get_data, web_resource_fixture_teardown); + + g_test_add_func("/webkit/webresource/loading", test_web_resource_loading); + g_test_add_func("/webkit/webresource/sub_resource_loading", test_web_resource_sub_resource_loading); + + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebsettings.c b/Source/WebKit/gtk/tests/testwebsettings.c new file mode 100644 index 0000000..4db929a --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebsettings.c @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static void test_webkit_web_settings_user_agent(void) +{ + WebKitWebSettings* settings; + GtkWidget* webView; + gchar* defaultUserAgent; + gchar* userAgent; + g_test_bug("17375"); + + webView = webkit_web_view_new(); + g_object_ref_sink(webView); + + settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView)); + defaultUserAgent = g_strdup(webkit_web_settings_get_user_agent(settings)); + + // test a custom UA string + userAgent = NULL; + g_object_set(G_OBJECT(settings), "user-agent", "testwebsettings/0.1", NULL); + g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); + g_assert_cmpstr(userAgent, ==, "testwebsettings/0.1"); + g_free(userAgent); + + // setting it to NULL or an empty value should give us the default UA string + userAgent = NULL; + g_object_set(G_OBJECT(settings), "user-agent", NULL, NULL); + g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); + g_assert_cmpstr(userAgent, ==, defaultUserAgent); + g_free(userAgent); + + userAgent = NULL; + g_object_set(G_OBJECT(settings), "user-agent", "", NULL); + g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL); + g_assert_cmpstr(userAgent, ==, defaultUserAgent); + g_free(userAgent); + + g_free(defaultUserAgent); + g_object_unref(webView); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/websettings/user_agent", test_webkit_web_settings_user_agent); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwebview.c b/Source/WebKit/gtk/tests/testwebview.c new file mode 100644 index 0000000..778235d --- /dev/null +++ b/Source/WebKit/gtk/tests/testwebview.c @@ -0,0 +1,378 @@ +/* + * Copyright (C) 2008 Holger Hans Peter Freyther + * Copyright (C) 2009, 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "test_utils.h" + +#include <errno.h> +#include <unistd.h> +#include <string.h> + +#include <glib.h> +#include <glib/gstdio.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +GMainLoop* loop; +SoupSession *session; +char* base_uri; + +/* For real request testing */ +static void +server_callback(SoupServer* server, SoupMessage* msg, + const char* path, GHashTable* query, + SoupClientContext* context, gpointer data) +{ + if (msg->method != SOUP_METHOD_GET) { + soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED); + return; + } + + soup_message_set_status(msg, SOUP_STATUS_OK); + + if (g_str_equal(path, "/favicon.ico")) { + char* contents; + gsize length; + GError* error = NULL; + + g_file_get_contents("blank.ico", &contents, &length, &error); + g_assert(!error); + + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length); + } else if (g_str_equal(path, "/bigdiv.html")) { + char* contents = g_strdup("<html><body><a id=\"link\" href=\"http://abc.def\">test</a><div style=\"background-color: green; height: 1200px;\"></div></body></html>"); + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents)); + } else if (g_str_equal(path, "/iframe.html")) { + char* contents = g_strdup("<html><body id=\"some-content\"><div style=\"background-color: green; height: 50px;\"></div><iframe src=\"bigdiv.html\"></iframe></body></html>"); + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents)); + } else { + char* contents = g_strdup("<html><body>test</body></html>"); + soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents)); + } + + soup_message_body_complete(msg->response_body); +} + +static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED || + webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED) + g_main_loop_quit(loop); +} + +static void icon_uri_changed_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + gboolean* been_here = (gboolean*)data; + char* expected_uri; + + g_assert_cmpstr(g_param_spec_get_name(pspec), ==, "icon-uri"); + + expected_uri = g_strdup_printf("%sfavicon.ico", base_uri); + g_assert_cmpstr(webkit_web_view_get_icon_uri(web_view), ==, expected_uri); + g_free(expected_uri); + + *been_here = TRUE; +} + +static void icon_loaded_cb(WebKitWebView* web_view, char* icon_uri, gpointer data) +{ + gboolean* been_here = (gboolean*)data; + char* expected_uri = g_strdup_printf("%sfavicon.ico", base_uri); + g_assert_cmpstr(icon_uri, ==, expected_uri); + g_free(expected_uri); + + g_assert_cmpstr(icon_uri, ==, webkit_web_view_get_icon_uri(web_view)); + + *been_here = TRUE; +} + +static void test_webkit_web_view_icon_uri() +{ + gboolean been_to_uri_changed = FALSE; + gboolean been_to_icon_loaded = FALSE; + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + g_object_ref_sink(G_OBJECT(view)); + + loop = g_main_loop_new(NULL, TRUE); + + g_object_connect(G_OBJECT(view), + "signal::notify::progress", idle_quit_loop_cb, NULL, + "signal::notify::icon-uri", icon_uri_changed_cb, &been_to_uri_changed, + "signal::icon-loaded", icon_loaded_cb, &been_to_icon_loaded, + NULL); + + webkit_web_view_load_uri(view, base_uri); + + g_main_loop_run(loop); + + g_assert(been_to_uri_changed); + g_assert(been_to_icon_loaded); + + g_object_unref(view); +} + +static gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data) +{ + GMainLoop* loop = (GMainLoop*)data; + g_main_loop_quit(loop); + + return FALSE; +} + +static void test_webkit_web_view_grab_focus() +{ + char* uri = g_strconcat(base_uri, "iframe.html", NULL); + GtkWidget* window = gtk_window_new(GTK_WINDOW_POPUP); + GtkWidget* scrolled_window = gtk_scrolled_window_new(NULL, NULL); + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + GtkAdjustment* adjustment; + + gtk_window_set_default_size(GTK_WINDOW(window), 400, 200); + + gtk_container_add(GTK_CONTAINER(window), scrolled_window); + gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(view)); + + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + loop = g_main_loop_new(NULL, TRUE); + + g_signal_connect(view, "notify::progress", G_CALLBACK (idle_quit_loop_cb), NULL); + + /* Wait for window to show up */ + gtk_widget_show_all(window); + g_signal_connect(window, "map-event", + G_CALLBACK(map_event_cb), loop); + g_main_loop_run(loop); + + /* Load a page with a big div that will cause scrollbars to appear */ + webkit_web_view_load_uri(view, uri); + g_main_loop_run(loop); + + adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window)); + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0); + + /* Since webkit_web_view_execute_script does not return a value, + it is impossible to know if an inner document has focus after + a node of it was focused via .focus() method. + The code below is an workaround: if the node has focus, a scroll + action is performed and afterward it is checked if the adjustment + has to be different from 0. + */ + char script[] = "var innerDoc = document.defaultView.frames[0].document; \ + innerDoc.getElementById(\"link\").focus(); \ + if (innerDoc.hasFocus()) \ + window.scrollBy(0, 100);"; + + /* Focus an element using JavaScript */ + webkit_web_view_execute_script(view, script); + + /* Make sure the ScrolledWindow noticed the scroll */ + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), !=, 0.0); + + g_free(uri); + gtk_widget_destroy(window); +} + +static void do_test_webkit_web_view_adjustments(gboolean with_page_cache) +{ + char* effective_uri = g_strconcat(base_uri, "bigdiv.html", NULL); + char* second_uri = g_strconcat(base_uri, "iframe.html", NULL); + GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget* scrolled_window = gtk_scrolled_window_new(NULL, NULL); + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + GtkAdjustment* adjustment; + double lower; + double upper; + + if (with_page_cache) { + WebKitWebSettings* settings = webkit_web_view_get_settings(view); + g_object_set(settings, "enable-page-cache", TRUE, NULL); + } + + gtk_window_set_default_size(GTK_WINDOW(window), 400, 200); + + gtk_container_add(GTK_CONTAINER(window), scrolled_window); + gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(view)); + + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + loop = g_main_loop_new(NULL, TRUE); + + g_object_connect(G_OBJECT(view), + "signal::notify::progress", idle_quit_loop_cb, NULL, + NULL); + + /* Wait for window to show up */ + gtk_widget_show_all(window); + g_signal_connect(window, "map-event", + G_CALLBACK(map_event_cb), loop); + g_main_loop_run(loop); + + /* Load a page with a big div that will cause scrollbars to appear */ + webkit_web_view_load_uri(view, effective_uri); + g_main_loop_run(loop); + + adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window)); + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0); + + lower = gtk_adjustment_get_lower(adjustment); + upper = gtk_adjustment_get_upper(adjustment); + + /* Scroll the view using JavaScript */ + webkit_web_view_execute_script(view, "window.scrollBy(0, 100)"); + + /* Make sure the ScrolledWindow noticed the scroll */ + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 100.0); + + /* Load a second URI */ + webkit_web_view_load_uri(view, second_uri); + g_main_loop_run(loop); + + /* Make sure the scrollbar has been reset */ + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0); + + /* Go back */ + webkit_web_view_go_back(view); + + /* When using page cache, go_back will return syncronously */ + if (!with_page_cache) + g_main_loop_run(loop); + + /* Make sure GTK+ has time to process the changes in size, for the adjusments */ + while (gtk_events_pending()) + gtk_main_iteration(); + + /* Make sure upper and lower bounds have been restored correctly */ + g_assert_cmpfloat(lower, ==, gtk_adjustment_get_lower(adjustment)); + g_assert_cmpfloat(upper, ==, gtk_adjustment_get_upper(adjustment)); + + g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 100.0); + + g_free(effective_uri); + g_free(second_uri); + + gtk_widget_destroy(window); +} + +static void test_webkit_web_view_adjustments() +{ + /* Test this with page cache disabled, and enabled. */ + do_test_webkit_web_view_adjustments(FALSE); + do_test_webkit_web_view_adjustments(TRUE); +} + +gboolean delayed_destroy(gpointer data) +{ + gtk_widget_destroy(GTK_WIDGET(data)); + g_main_loop_quit(loop); + return FALSE; +} + +static void test_webkit_web_view_destroy() +{ + GtkWidget* window; + GtkWidget* web_view; + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + web_view = webkit_web_view_new(); + + gtk_container_add(GTK_CONTAINER(window), web_view); + + gtk_widget_show_all(window); + + loop = g_main_loop_new(NULL, TRUE); + + g_signal_connect(window, "map-event", + G_CALLBACK(map_event_cb), loop); + g_main_loop_run(loop); + + g_idle_add(delayed_destroy, web_view); + g_main_loop_run(loop); + + gtk_widget_destroy(window); +} + +static void test_webkit_web_view_window_features() +{ + GtkWidget* window; + GtkWidget* web_view; + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + web_view = webkit_web_view_new(); + + gtk_container_add(GTK_CONTAINER(window), web_view); + + gtk_widget_show_all(window); + + loop = g_main_loop_new(NULL, TRUE); + + g_signal_connect(window, "map-event", + G_CALLBACK(map_event_cb), loop); + g_main_loop_run(loop); + + /* Bug #36144 */ + g_object_set(G_OBJECT(web_view), "window-features", NULL, NULL); + + gtk_widget_destroy(window); +} + +int main(int argc, char** argv) +{ + SoupServer* server; + SoupURI* soup_uri; + + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + /* Hopefully make test independent of the path it's called from. */ + testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]); + + server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); + soup_server_run_async(server); + + soup_server_add_handler(server, NULL, server_callback, NULL, NULL); + + soup_uri = soup_uri_new("http://127.0.0.1/"); + soup_uri_set_port(soup_uri, soup_server_get_port(server)); + + base_uri = soup_uri_to_string(soup_uri, FALSE); + soup_uri_free(soup_uri); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/webview/icon-uri", test_webkit_web_view_icon_uri); + g_test_add_func("/webkit/webview/adjustments", test_webkit_web_view_adjustments); + g_test_add_func("/webkit/webview/destroy", test_webkit_web_view_destroy); + g_test_add_func("/webkit/webview/grab_focus", test_webkit_web_view_grab_focus); + g_test_add_func("/webkit/webview/window-features", test_webkit_web_view_window_features); + + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/tests/testwindow.c b/Source/WebKit/gtk/tests/testwindow.c new file mode 100644 index 0000000..ecd6609 --- /dev/null +++ b/Source/WebKit/gtk/tests/testwindow.c @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +#if GTK_CHECK_VERSION(2, 14, 0) + +static void notify_load_status_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data) +{ + if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED) { + GMainLoop* loop = (GMainLoop*)data; + + g_main_loop_quit(loop); + } +} + +static void test_webkit_window_scrollbar_policy(void) +{ + GMainLoop* loop; + GtkWidget* scrolledWindow; + GtkWidget* webView; + WebKitWebFrame* mainFrame; + GtkPolicyType horizontalPolicy; + GtkPolicyType verticalPolicy; + + loop = g_main_loop_new(NULL, TRUE); + + scrolledWindow = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + webView = webkit_web_view_new(); + g_object_ref_sink(webView); + + g_signal_connect(webView, "notify::load-status", + G_CALLBACK(notify_load_status_cb), loop); + + gtk_container_add(GTK_CONTAINER(scrolledWindow), webView); + + mainFrame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(webView)); + + /* Test we correctly apply policy for not having scrollbars; This + * case is special, because we turn the policy from NEVER to + * AUTOMATIC, since we cannot easily represent the same thing + * using GtkScrolledWindow */ + webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView), + "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'hidden';</script></html>", + "file://"); + + g_main_loop_run(loop); + + gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow), + &horizontalPolicy, &verticalPolicy); + + g_assert(horizontalPolicy == GTK_POLICY_AUTOMATIC); + g_assert(verticalPolicy == GTK_POLICY_AUTOMATIC); + + g_assert(GTK_POLICY_NEVER == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame)); + g_assert(GTK_POLICY_NEVER == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame)); + + /* Test we correctly apply policy for always having scrollbars */ + webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView), + "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'scroll';</script></html>", + "file://"); + + g_main_loop_run(loop); + + gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow), + &horizontalPolicy, &verticalPolicy); + + g_assert(horizontalPolicy == GTK_POLICY_ALWAYS); + g_assert(verticalPolicy == GTK_POLICY_ALWAYS); + + g_assert(horizontalPolicy == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame)); + g_assert(verticalPolicy == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame)); + + /* Test we correctly apply policy for having scrollbars when needed */ + webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView), + "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'auto';</script></html>", + "file://"); + + g_main_loop_run(loop); + + gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow), + &horizontalPolicy, &verticalPolicy); + + g_assert(horizontalPolicy == GTK_POLICY_AUTOMATIC); + g_assert(verticalPolicy == GTK_POLICY_AUTOMATIC); + + g_assert(horizontalPolicy == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame)); + g_assert(verticalPolicy == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame)); + + g_object_unref(webView); +} + +int main(int argc, char** argv) +{ + g_thread_init(NULL); + gtk_test_init(&argc, &argv, NULL); + + g_test_bug_base("https://bugs.webkit.org/"); + g_test_add_func("/webkit/window/scrollbar_policy", test_webkit_window_scrollbar_policy); + return g_test_run (); +} + +#else +int main(int argc, char** argv) +{ + g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now."); + return 0; +} + +#endif diff --git a/Source/WebKit/gtk/webkit.pc.in b/Source/WebKit/gtk/webkit.pc.in new file mode 100644 index 0000000..9bed0f3 --- /dev/null +++ b/Source/WebKit/gtk/webkit.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: WebKit +Description: Web content engine for GTK+ +Version: @VERSION@ +Requires: glib-2.0 gtk+-@GTK_API_VERSION@ libsoup-2.4 +Libs: -L${libdir} -lwebkitgtk-@WEBKITGTK_API_VERSION@ +Cflags: -I${includedir}/webkit-@WEBKITGTK_API_VERSION@ diff --git a/Source/WebKit/gtk/webkit/webkit.h b/Source/WebKit/gtk/webkit/webkit.h new file mode 100644 index 0000000..d93fae1 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkit.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2007 Alp Toker <alp@atoker.com> + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __WEBKIT_H__ +#define __WEBKIT_H__ + +#include <webkit/webkitversion.h> +#include <webkit/webkitdefines.h> +#include <webkit/webkitdom.h> +#include <webkit/webkitdownload.h> +#include <webkit/webkitgeolocationpolicydecision.h> +#include <webkit/webkitglobals.h> +#include <webkit/webkithittestresult.h> +#include <webkit/webkitnetworkrequest.h> +#include <webkit/webkitnetworkresponse.h> +#include <webkit/webkitsoupauthdialog.h> +#include <webkit/webkitviewportattributes.h> +#include <webkit/webkitwebdatasource.h> +#include <webkit/webkitwebframe.h> +#include <webkit/webkitwebsettings.h> +#include <webkit/webkitwebinspector.h> +#include <webkit/webkitwebwindowfeatures.h> +#include <webkit/webkitwebview.h> +#include <webkit/webkitwebbackforwardlist.h> +#include <webkit/webkitwebhistoryitem.h> +#include <webkit/webkitwebplugin.h> +#include <webkit/webkitwebplugindatabase.h> +#include <webkit/webkitwebpolicydecision.h> +#include <webkit/webkitwebnavigationaction.h> +#include <webkit/webkitwebresource.h> +#include <webkit/webkitwebdatabase.h> +#include <webkit/webkitsecurityorigin.h> +#include <webkit/webkitenumtypes.h> + +#endif /* __WEBKIT_H__ */ diff --git a/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp b/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp new file mode 100644 index 0000000..87f3ab5 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#include "ApplicationCacheStorage.h" +#include "webkitapplicationcacheprivate.h" +#include <wtf/UnusedParam.h> + +void webkit_application_cache_set_maximum_size(unsigned long long size) +{ +#if ENABLE(OFFLINE_WEB_APPLICATIONS) + WebCore::cacheStorage().empty(); + WebCore::cacheStorage().vacuumDatabaseFile(); + WebCore::cacheStorage().setMaximumSize(size); +#else + UNUSED_PARAM(size); +#endif +} diff --git a/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h b/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h new file mode 100644 index 0000000..cbf3759 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitapplicationcacheprivate_h +#define webkitapplicationcacheprivate_h + +#include "webkitdefines.h" +#include <glib.h> + +extern "C" { + +WEBKIT_API void webkit_application_cache_set_maximum_size(unsigned long long size); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitdefines.h b/Source/WebKit/gtk/webkit/webkitdefines.h new file mode 100644 index 0000000..b0b607b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitdefines.h @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitdefines_h +#define webkitdefines_h + +#include <glib.h> + +#ifdef G_OS_WIN32 + #ifdef BUILDING_WEBKIT + #define WEBKIT_API __declspec(dllexport) + #else + #define WEBKIT_API __declspec(dllimport) + #endif + #define WEBKIT_OBSOLETE_API WEBKIT_API +#else + #define WEBKIT_API __attribute__((visibility("default"))) + #define WEBKIT_OBSOLETE_API WEBKIT_API __attribute__((deprecated)) +#endif + +#ifndef WEBKIT_API + #define WEBKIT_API +#endif + +G_BEGIN_DECLS + +typedef struct _WebKitNetworkRequest WebKitNetworkRequest; +typedef struct _WebKitNetworkRequestClass WebKitNetworkRequestClass; + +typedef struct _WebKitNetworkResponse WebKitNetworkResponse; +typedef struct _WebKitNetworkResponseClass WebKitNetworkResponseClass; + +typedef struct _WebKitWebBackForwardList WebKitWebBackForwardList; +typedef struct _WebKitWebBackForwardListClass WebKitWebBackForwardListClass; + +typedef struct _WebKitWebHistoryItem WebKitWebHistoryItem; +typedef struct _WebKitWebHistoryItemClass WebKitWebHistoryItemClass; + +typedef struct _WebKitWebFrame WebKitWebFrame; +typedef struct _WebKitWebFrameClass WebKitWebFrameClass; + +typedef struct _WebKitWebPolicyDecision WebKitWebPolicyDecision; +typedef struct _WebKitWebPolicyDecisionClass WebKitWebPolicyDecisionClass; + +typedef struct _WebKitWebSettings WebKitWebSettings; +typedef struct _WebKitWebSettingsClass WebKitWebSettingsClass; + +typedef struct _WebKitWebInspector WebKitWebInspector; +typedef struct _WebKitWebInspectorClass WebKitWebInspectorClass; + +typedef struct _WebKitWebWindowFeatures WebKitWebWindowFeatures; +typedef struct _WebKitWebWindowFeaturesClass WebKitWebWindowFeaturesClass; + +typedef struct _WebKitWebView WebKitWebView; +typedef struct _WebKitWebViewClass WebKitWebViewClass; + +typedef struct _WebKitDownload WebKitDownload; +typedef struct _WebKitDownloadClass WebKitDownloadClass; + +typedef struct _WebKitWebResource WebKitWebResource; +typedef struct _WebKitWebResourceClass WebKitWebResourceClass; + +typedef struct _WebKitWebDataSource WebKitWebDataSource; +typedef struct _WebKitWebDataSourceClass WebKitWebDataSourceClass; + +typedef struct _WebKitWebDatabase WebKitWebDatabase; +typedef struct _WebKitWebDatabaseClass WebKitWebDatabaseClass; + +typedef struct _WebKitSecurityOrigin WebKitSecurityOrigin; +typedef struct _WebKitSecurityOriginClass WebKitSecurityOriginClass; + +typedef struct _WebKitHitTestResult WebKitHitTestResult; +typedef struct _WebKitHitTestResultClass WebKitHitTestResultClass; + +typedef struct _WebKitGeolocationPolicyDecision WebKitGeolocationPolicyDecision; +typedef struct _WebKitGeolocationPolicyDecisionClass WebKitGeolocationPolicyDecisionClass; + +typedef struct _WebKitViewportAttributes WebKitViewportAttributes; +typedef struct _WebKitViewportAttributesClass WebKitViewportAttributesClass; + +typedef struct _WebKitWebPluginDatabase WebKitWebPluginDatabase; +typedef struct _WebKitWebPluginDatabaseClass WebKitWebPluginDatabaseClass; + +typedef struct _WebKitWebPlugin WebKitWebPlugin; +typedef struct _WebKitWebPluginClass WebKitWebPluginClass; + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitdownload.cpp b/Source/WebKit/gtk/webkit/webkitdownload.cpp new file mode 100644 index 0000000..60b8e6d --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitdownload.cpp @@ -0,0 +1,956 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitdownload.h" + +#include "GRefPtr.h" +#include "Noncopyable.h" +#include "NotImplemented.h" +#include "ResourceHandleClient.h" +#include "ResourceHandleInternal.h" +#include "ResourceRequest.h" +#include "ResourceResponse.h" +#include "webkitdownloadprivate.h" +#include "webkitenumtypes.h" +#include "webkitglobals.h" +#include "webkitglobalsprivate.h" +#include "webkitmarshal.h" +#include "webkitnetworkrequestprivate.h" +#include "webkitnetworkresponse.h" +#include "webkitnetworkresponseprivate.h" +#include <glib/gi18n-lib.h> +#include <glib/gstdio.h> +#include <wtf/text/CString.h> + +#ifdef ERROR +#undef ERROR +#endif + +using namespace WebKit; +using namespace WebCore; + +/** + * SECTION:webkitdownload + * @short_description: Object used to communicate with the application when downloading. + * + * #WebKitDownload carries information about a download request, + * including a #WebKitNetworkRequest object. The application may use + * this object to control the download process, or to simply figure + * out what is to be downloaded, and do it itself. + */ + +class DownloadClient : public Noncopyable, public ResourceHandleClient { + public: + DownloadClient(WebKitDownload*); + + virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&); + virtual void didReceiveData(ResourceHandle*, const char*, int, int); + virtual void didFinishLoading(ResourceHandle*, double); + virtual void didFail(ResourceHandle*, const ResourceError&); + virtual void wasBlocked(ResourceHandle*); + virtual void cannotShowURL(ResourceHandle*); + + private: + WebKitDownload* m_download; +}; + +struct _WebKitDownloadPrivate { + gchar* destinationURI; + gchar* suggestedFilename; + guint64 currentSize; + GTimer* timer; + WebKitDownloadStatus status; + GFileOutputStream* outputStream; + DownloadClient* downloadClient; + WebKitNetworkRequest* networkRequest; + WebKitNetworkResponse* networkResponse; + RefPtr<ResourceHandle> resourceHandle; +}; + +enum { + // Normal signals. + ERROR, + LAST_SIGNAL +}; + +static guint webkit_download_signals[LAST_SIGNAL] = { 0 }; + +enum { + PROP_0, + + PROP_NETWORK_REQUEST, + PROP_DESTINATION_URI, + PROP_SUGGESTED_FILENAME, + PROP_PROGRESS, + PROP_STATUS, + PROP_CURRENT_SIZE, + PROP_TOTAL_SIZE, + PROP_NETWORK_RESPONSE +}; + +G_DEFINE_TYPE(WebKitDownload, webkit_download, G_TYPE_OBJECT); + + +static void webkit_download_set_response(WebKitDownload* download, const ResourceResponse& response); +static void webkit_download_set_status(WebKitDownload* download, WebKitDownloadStatus status); + +static void webkit_download_dispose(GObject* object) +{ + WebKitDownload* download = WEBKIT_DOWNLOAD(object); + WebKitDownloadPrivate* priv = download->priv; + + if (priv->outputStream) { + g_object_unref(priv->outputStream); + priv->outputStream = NULL; + } + + if (priv->networkRequest) { + g_object_unref(priv->networkRequest); + priv->networkRequest = NULL; + } + + if (priv->networkResponse) { + g_object_unref(priv->networkResponse); + priv->networkResponse = NULL; + } + + G_OBJECT_CLASS(webkit_download_parent_class)->dispose(object); +} + +static void webkit_download_finalize(GObject* object) +{ + WebKitDownload* download = WEBKIT_DOWNLOAD(object); + WebKitDownloadPrivate* priv = download->priv; + + // We don't call webkit_download_cancel() because we don't want to emit + // signals when finalizing an object. + if (priv->resourceHandle) { + if (priv->status == WEBKIT_DOWNLOAD_STATUS_STARTED) { + priv->resourceHandle->setClient(0); + priv->resourceHandle->cancel(); + } + priv->resourceHandle.release(); + } + + delete priv->downloadClient; + + // The download object may never have _start called on it, so we + // need to make sure timer is non-NULL. + if (priv->timer) { + g_timer_destroy(priv->timer); + priv->timer = NULL; + } + + g_free(priv->destinationURI); + g_free(priv->suggestedFilename); + + G_OBJECT_CLASS(webkit_download_parent_class)->finalize(object); +} + +static void webkit_download_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitDownload* download = WEBKIT_DOWNLOAD(object); + + switch(prop_id) { + case PROP_NETWORK_REQUEST: + g_value_set_object(value, webkit_download_get_network_request(download)); + break; + case PROP_NETWORK_RESPONSE: + g_value_set_object(value, webkit_download_get_network_response(download)); + break; + case PROP_DESTINATION_URI: + g_value_set_string(value, webkit_download_get_destination_uri(download)); + break; + case PROP_SUGGESTED_FILENAME: + g_value_set_string(value, webkit_download_get_suggested_filename(download)); + break; + case PROP_PROGRESS: + g_value_set_double(value, webkit_download_get_progress(download)); + break; + case PROP_STATUS: + g_value_set_enum(value, webkit_download_get_status(download)); + break; + case PROP_CURRENT_SIZE: + g_value_set_uint64(value, webkit_download_get_current_size(download)); + break; + case PROP_TOTAL_SIZE: + g_value_set_uint64(value, webkit_download_get_total_size(download)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +static void webkit_download_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec *pspec) +{ + WebKitDownload* download = WEBKIT_DOWNLOAD(object); + WebKitDownloadPrivate* priv = download->priv; + + switch(prop_id) { + case PROP_NETWORK_REQUEST: + priv->networkRequest = WEBKIT_NETWORK_REQUEST(g_value_dup_object(value)); + break; + case PROP_NETWORK_RESPONSE: + priv->networkResponse = WEBKIT_NETWORK_RESPONSE(g_value_dup_object(value)); + break; + case PROP_DESTINATION_URI: + webkit_download_set_destination_uri(download, g_value_get_string(value)); + break; + case PROP_STATUS: + webkit_download_set_status(download, static_cast<WebKitDownloadStatus>(g_value_get_enum(value))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +static void webkit_download_class_init(WebKitDownloadClass* downloadClass) +{ + GObjectClass* objectClass = G_OBJECT_CLASS(downloadClass); + objectClass->dispose = webkit_download_dispose; + objectClass->finalize = webkit_download_finalize; + objectClass->get_property = webkit_download_get_property; + objectClass->set_property = webkit_download_set_property; + + webkitInit(); + + /** + * WebKitDownload::error: + * @download: the object on which the signal is emitted + * @error_code: the corresponding error code + * @error_detail: detailed error code for the error, see + * #WebKitDownloadError + * @reason: a string describing the error + * + * Emitted when @download is interrupted either by user action or by + * network errors, @error_detail will take any value of + * #WebKitDownloadError. + * + * Since: 1.1.2 + */ + webkit_download_signals[ERROR] = g_signal_new("error", + G_TYPE_FROM_CLASS(downloadClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__INT_INT_STRING, + G_TYPE_BOOLEAN, 3, + G_TYPE_INT, + G_TYPE_INT, + G_TYPE_STRING); + + // Properties. + + /** + * WebKitDownload:network-request + * + * The #WebKitNetworkRequest instance associated with the download. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, + PROP_NETWORK_REQUEST, + g_param_spec_object("network-request", + _("Network Request"), + _("The network request for the URI that should be downloaded"), + WEBKIT_TYPE_NETWORK_REQUEST, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitDownload:network-response + * + * The #WebKitNetworkResponse instance associated with the download. + * + * Since: 1.1.16 + */ + g_object_class_install_property(objectClass, + PROP_NETWORK_RESPONSE, + g_param_spec_object("network-response", + _("Network Response"), + _("The network response for the URI that should be downloaded"), + WEBKIT_TYPE_NETWORK_RESPONSE, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitDownload:destination-uri + * + * The URI of the save location for this download. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, + PROP_DESTINATION_URI, + g_param_spec_string("destination-uri", + _("Destination URI"), + _("The destination URI where to save the file"), + "", + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitDownload:suggested-filename + * + * The file name suggested as default when saving + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, + PROP_SUGGESTED_FILENAME, + g_param_spec_string("suggested-filename", + _("Suggested Filename"), + _("The filename suggested as default when saving"), + "", + WEBKIT_PARAM_READABLE)); + + /** + * WebKitDownload:progress: + * + * Determines the current progress of the download. Notice that, + * although the progress changes are reported as soon as possible, + * the emission of the notify signal for this property is + * throttled, for the benefit of download managers. If you care + * about every update, use WebKitDownload:current-size. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, PROP_PROGRESS, + g_param_spec_double("progress", + _("Progress"), + _("Determines the current progress of the download"), + 0.0, 1.0, 1.0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitDownload:status: + * + * Determines the current status of the download. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, PROP_STATUS, + g_param_spec_enum("status", + _("Status"), + _("Determines the current status of the download"), + WEBKIT_TYPE_DOWNLOAD_STATUS, + WEBKIT_DOWNLOAD_STATUS_CREATED, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitDownload:current-size + * + * The length of the data already downloaded + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, + PROP_CURRENT_SIZE, + g_param_spec_uint64("current-size", + _("Current Size"), + _("The length of the data already downloaded"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitDownload:total-size + * + * The total size of the file + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, + PROP_CURRENT_SIZE, + g_param_spec_uint64("total-size", + _("Total Size"), + _("The total size of the file"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(downloadClass, sizeof(WebKitDownloadPrivate)); +} + +static void webkit_download_init(WebKitDownload* download) +{ + WebKitDownloadPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(download, WEBKIT_TYPE_DOWNLOAD, WebKitDownloadPrivate); + download->priv = priv; + + priv->downloadClient = new DownloadClient(download); + priv->currentSize = 0; + priv->status = WEBKIT_DOWNLOAD_STATUS_CREATED; +} + +/** + * webkit_download_new: + * @request: a #WebKitNetworkRequest + * + * Creates a new #WebKitDownload object for the given + * #WebKitNetworkRequest object. + * + * Returns: the new #WebKitDownload + * + * Since: 1.1.2 + */ +WebKitDownload* webkit_download_new(WebKitNetworkRequest* request) +{ + g_return_val_if_fail(request, NULL); + + return WEBKIT_DOWNLOAD(g_object_new(WEBKIT_TYPE_DOWNLOAD, "network-request", request, NULL)); +} + +// Internal usage only +WebKitDownload* webkit_download_new_with_handle(WebKitNetworkRequest* request, WebCore::ResourceHandle* handle, const WebCore::ResourceResponse& response) +{ + g_return_val_if_fail(request, NULL); + + ResourceHandleInternal* d = handle->getInternal(); + if (d->m_soupMessage) + soup_session_pause_message(webkit_get_default_session(), d->m_soupMessage.get()); + + WebKitDownload* download = WEBKIT_DOWNLOAD(g_object_new(WEBKIT_TYPE_DOWNLOAD, "network-request", request, NULL)); + WebKitDownloadPrivate* priv = download->priv; + + handle->ref(); + priv->resourceHandle = handle; + + webkit_download_set_response(download, response); + + return download; +} + +static gboolean webkit_download_open_stream_for_uri(WebKitDownload* download, const gchar* uri, gboolean append=FALSE) +{ + g_return_val_if_fail(uri, FALSE); + + WebKitDownloadPrivate* priv = download->priv; + GFile* file = g_file_new_for_uri(uri); + GError* error = NULL; + + if (append) + priv->outputStream = g_file_append_to(file, G_FILE_CREATE_NONE, NULL, &error); + else + priv->outputStream = g_file_replace(file, NULL, TRUE, G_FILE_CREATE_NONE, NULL, &error); + + g_object_unref(file); + + if (error) { + gboolean handled; + g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled); + g_error_free(error); + return FALSE; + } + + return TRUE; +} + +static void webkit_download_close_stream(WebKitDownload* download) +{ + WebKitDownloadPrivate* priv = download->priv; + if (priv->outputStream) { + g_object_unref(priv->outputStream); + priv->outputStream = NULL; + } +} + +/** + * webkit_download_start: + * @download: the #WebKitDownload + * + * Initiates the download. Notice that you must have set the + * destination-uri property before calling this method. + * + * Since: 1.1.2 + */ +void webkit_download_start(WebKitDownload* download) +{ + g_return_if_fail(WEBKIT_IS_DOWNLOAD(download)); + + WebKitDownloadPrivate* priv = download->priv; + g_return_if_fail(priv->destinationURI); + g_return_if_fail(priv->status == WEBKIT_DOWNLOAD_STATUS_CREATED); + g_return_if_fail(priv->timer == NULL); + + // For GTK, when downloading a file NetworkingContext is null + if (!priv->resourceHandle) + priv->resourceHandle = ResourceHandle::create(/* Null NetworkingContext */ NULL, core(priv->networkRequest), priv->downloadClient, false, false); + else { + priv->resourceHandle->setClient(priv->downloadClient); + + ResourceHandleInternal* d = priv->resourceHandle->getInternal(); + if (d->m_soupMessage) + soup_session_unpause_message(webkit_get_default_session(), d->m_soupMessage.get()); + } + + priv->timer = g_timer_new(); + webkit_download_open_stream_for_uri(download, priv->destinationURI); +} + +/** + * webkit_download_cancel: + * @download: the #WebKitDownload + * + * Cancels the download. Calling this will not free the + * #WebKitDownload object, so you still need to call + * g_object_unref() on it, if you are the owner of a reference. Notice + * that cancelling the download provokes the emission of the + * WebKitDownload::error signal, reporting that the download was + * cancelled. + * + * Since: 1.1.2 + */ +void webkit_download_cancel(WebKitDownload* download) +{ + g_return_if_fail(WEBKIT_IS_DOWNLOAD(download)); + + WebKitDownloadPrivate* priv = download->priv; + + // Cancel may be called even if start was not called, so we need + // to make sure timer is non-NULL. + if (priv->timer) + g_timer_stop(priv->timer); + + if (priv->resourceHandle) + priv->resourceHandle->cancel(); + + webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_CANCELLED); + + gboolean handled; + g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER, _("User cancelled the download"), &handled); +} + +/** + * webkit_download_get_uri: + * @download: the #WebKitDownload + * + * Convenience method to retrieve the URI from the + * #WebKitNetworkRequest which is being downloaded. + * + * Returns: the uri + * + * Since: 1.1.2 + */ +const gchar* webkit_download_get_uri(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL); + + WebKitDownloadPrivate* priv = download->priv; + return webkit_network_request_get_uri(priv->networkRequest); +} + +/** + * webkit_download_get_network_request: + * @download: the #WebKitDownload + * + * Retrieves the #WebKitNetworkRequest object that backs the download + * process. + * + * Returns: (transfer none): the #WebKitNetworkRequest instance + * + * Since: 1.1.2 + */ +WebKitNetworkRequest* webkit_download_get_network_request(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL); + + WebKitDownloadPrivate* priv = download->priv; + return priv->networkRequest; +} + +/** + * webkit_download_get_network_response: + * @download: the #WebKitDownload + * + * Retrieves the #WebKitNetworkResponse object that backs the download + * process. + * + * Returns: (transfer none): the #WebKitNetworkResponse instance + * + * Since: 1.1.16 + */ +WebKitNetworkResponse* webkit_download_get_network_response(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL); + + WebKitDownloadPrivate* priv = download->priv; + return priv->networkResponse; +} + +static void webkit_download_set_response(WebKitDownload* download, const ResourceResponse& response) +{ + WebKitDownloadPrivate* priv = download->priv; + priv->networkResponse = kitNew(response); + + if (!response.isNull() && !response.suggestedFilename().isEmpty()) + webkit_download_set_suggested_filename(download, response.suggestedFilename().utf8().data()); +} + +/** + * webkit_download_get_suggested_filename: + * @download: the #WebKitDownload + * + * Retrieves the filename that was suggested by the server, or the one + * derived by WebKit from the URI. + * + * Returns: the suggested filename + * + * Since: 1.1.2 + */ +const gchar* webkit_download_get_suggested_filename(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL); + + WebKitDownloadPrivate* priv = download->priv; + if (priv->suggestedFilename) + return priv->suggestedFilename; + + KURL url = KURL(KURL(), webkit_network_request_get_uri(priv->networkRequest)); + url.setQuery(String()); + url.removeFragmentIdentifier(); + priv->suggestedFilename = g_strdup(decodeURLEscapeSequences(url.lastPathComponent()).utf8().data()); + return priv->suggestedFilename; +} + +// for internal use only +void webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename) +{ + WebKitDownloadPrivate* priv = download->priv; + g_free(priv->suggestedFilename); + priv->suggestedFilename = g_strdup(suggestedFilename); + + g_object_notify(G_OBJECT(download), "suggested-filename"); +} + + +/** + * webkit_download_get_destination_uri: + * @download: the #WebKitDownload + * + * Obtains the URI to which the downloaded file will be written. This + * must have been set by the application before calling + * webkit_download_start(), and may be %NULL. + * + * Returns: the destination URI or %NULL + * + * Since: 1.1.2 + */ +const gchar* webkit_download_get_destination_uri(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL); + + WebKitDownloadPrivate* priv = download->priv; + return priv->destinationURI; +} + +/** + * webkit_download_set_destination_uri: + * @download: the #WebKitDownload + * @destination_uri: the destination URI + * + * Defines the URI that should be used to save the downloaded file to. + * + * Since: 1.1.2 + */ +void webkit_download_set_destination_uri(WebKitDownload* download, const gchar* destination_uri) +{ + g_return_if_fail(WEBKIT_IS_DOWNLOAD(download)); + g_return_if_fail(destination_uri); + + WebKitDownloadPrivate* priv = download->priv; + if (priv->destinationURI && !strcmp(priv->destinationURI, destination_uri)) + return; + + if (priv->status != WEBKIT_DOWNLOAD_STATUS_CREATED && priv->status != WEBKIT_DOWNLOAD_STATUS_CANCELLED) { + ASSERT(priv->destinationURI); + + gboolean downloading = priv->outputStream != NULL; + if (downloading) + webkit_download_close_stream(download); + + GFile* src = g_file_new_for_uri(priv->destinationURI); + GFile* dest = g_file_new_for_uri(destination_uri); + GError* error = NULL; + + g_file_move(src, dest, G_FILE_COPY_BACKUP, NULL, NULL, NULL, &error); + + g_object_unref(src); + g_object_unref(dest); + + g_free(priv->destinationURI); + priv->destinationURI = g_strdup(destination_uri); + + if (error) { + gboolean handled; + g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled); + g_error_free(error); + return; + } + + if (downloading) { + if (!webkit_download_open_stream_for_uri(download, destination_uri, TRUE)) { + webkit_download_cancel(download); + return; + } + } + } else { + g_free(priv->destinationURI); + priv->destinationURI = g_strdup(destination_uri); + } + + // Only notify change if everything went fine. + g_object_notify(G_OBJECT(download), "destination-uri"); +} + +/** + * webkit_download_get_status: + * @download: the #WebKitDownload + * + * Obtains the current status of the download, as a + * #WebKitDownloadStatus. + * + * Returns: the current #WebKitDownloadStatus + * + * Since: 1.1.2 + */ +WebKitDownloadStatus webkit_download_get_status(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), WEBKIT_DOWNLOAD_STATUS_ERROR); + + WebKitDownloadPrivate* priv = download->priv; + return priv->status; +} + +static void webkit_download_set_status(WebKitDownload* download, WebKitDownloadStatus status) +{ + g_return_if_fail(WEBKIT_IS_DOWNLOAD(download)); + + WebKitDownloadPrivate* priv = download->priv; + priv->status = status; + + g_object_notify(G_OBJECT(download), "status"); +} + +/** + * webkit_download_get_total_size: + * @download: the #WebKitDownload + * + * Returns the expected total size of the download. This is expected + * because the server may provide incorrect or missing + * Content-Length. Notice that this may grow over time, as it will be + * always the same as current_size in the cases where current size + * surpasses it. + * + * Returns: the expected total size of the downloaded file + * + * Since: 1.1.2 + */ +guint64 webkit_download_get_total_size(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0); + + WebKitDownloadPrivate* priv = download->priv; + SoupMessage* message = priv->networkResponse ? webkit_network_response_get_message(priv->networkResponse) : NULL; + + if (!message) + return 0; + + return MAX(priv->currentSize, static_cast<guint64>(soup_message_headers_get_content_length(message->response_headers))); +} + +/** + * webkit_download_get_current_size: + * @download: the #WebKitDownload + * + * Current already downloaded size. + * + * Returns: the already downloaded size + * + * Since: 1.1.2 + */ +guint64 webkit_download_get_current_size(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0); + + WebKitDownloadPrivate* priv = download->priv; + return priv->currentSize; +} + +/** + * webkit_download_get_progress: + * @download: a #WebKitDownload + * + * Determines the current progress of the download. + * + * Returns: a #gdouble ranging from 0.0 to 1.0. + * + * Since: 1.1.2 + */ +gdouble webkit_download_get_progress(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 1.0); + + WebKitDownloadPrivate* priv = download->priv; + if (!priv->networkResponse) + return 0.0; + + gdouble total_size = static_cast<gdouble>(webkit_download_get_total_size(download)); + + if (total_size == 0) + return 1.0; + + return ((gdouble)priv->currentSize) / total_size; +} + +/** + * webkit_download_get_elapsed_time: + * @download: a #WebKitDownload + * + * Elapsed time for the download in seconds, including any fractional + * part. If the download is finished, had an error or was cancelled + * this is the time between its start and the event. + * + * Returns: seconds since the download was started, as a #gdouble + * + * Since: 1.1.2 + */ +gdouble webkit_download_get_elapsed_time(WebKitDownload* download) +{ + g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0.0); + + WebKitDownloadPrivate* priv = download->priv; + if (!priv->timer) + return 0; + + return g_timer_elapsed(priv->timer, NULL); +} + +static void webkit_download_received_data(WebKitDownload* download, const gchar* data, int length) +{ + WebKitDownloadPrivate* priv = download->priv; + + if (priv->currentSize == 0) + webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_STARTED); + + ASSERT(priv->outputStream); + + gsize bytes_written; + GError* error = NULL; + + g_output_stream_write_all(G_OUTPUT_STREAM(priv->outputStream), + data, length, &bytes_written, NULL, &error); + + if (error) { + gboolean handled; + g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled); + g_error_free(error); + return; + } + + priv->currentSize += length; + g_object_notify(G_OBJECT(download), "current-size"); + + ASSERT(priv->networkResponse); + if (priv->currentSize > webkit_download_get_total_size(download)) + g_object_notify(G_OBJECT(download), "total-size"); + + // Throttle progress notification to not consume high amounts of + // CPU on fast links, except when the last notification occured + // in more then 0.7 secs from now, or the last notified progress + // is passed in 1% or we reached the end. + static gdouble lastProgress = 0; + static gdouble lastElapsed = 0; + gdouble currentElapsed = g_timer_elapsed(priv->timer, NULL); + gdouble currentProgress = webkit_download_get_progress(download); + + if (lastElapsed + && lastProgress + && (currentElapsed - lastElapsed) < 0.7 + && (currentProgress - lastProgress) < 0.01 + && currentProgress < 1.0) { + return; + } + lastElapsed = currentElapsed; + lastProgress = currentProgress; + + g_object_notify(G_OBJECT(download), "progress"); +} + +static void webkit_download_finished_loading(WebKitDownload* download) +{ + webkit_download_close_stream(download); + + WebKitDownloadPrivate* priv = download->priv; + + g_timer_stop(priv->timer); + + g_object_notify(G_OBJECT(download), "progress"); + webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_FINISHED); +} + +static void webkit_download_error(WebKitDownload* download, const ResourceError& error) +{ + webkit_download_close_stream(download); + + WebKitDownloadPrivate* priv = download->priv; + GRefPtr<WebKitDownload> protect(download); + + g_timer_stop(priv->timer); + webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_ERROR); + + gboolean handled; + g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_NETWORK, error.localizedDescription().utf8().data(), &handled); +} + +DownloadClient::DownloadClient(WebKitDownload* download) + : m_download(download) +{ +} + +void DownloadClient::didReceiveResponse(ResourceHandle*, const ResourceResponse& response) +{ + webkit_download_set_response(m_download, response); +} + +void DownloadClient::didReceiveData(ResourceHandle*, const char* data, int length, int lengthReceived) +{ + webkit_download_received_data(m_download, data, length); +} + +void DownloadClient::didFinishLoading(ResourceHandle*, double) +{ + webkit_download_finished_loading(m_download); +} + +void DownloadClient::didFail(ResourceHandle*, const ResourceError& error) +{ + webkit_download_error(m_download, error); +} + +void DownloadClient::wasBlocked(ResourceHandle*) +{ + // FIXME: Implement this when we have the new frame loader signals + // and error handling. + notImplemented(); +} + +void DownloadClient::cannotShowURL(ResourceHandle*) +{ + // FIXME: Implement this when we have the new frame loader signals + // and error handling. + notImplemented(); +} diff --git a/Source/WebKit/gtk/webkit/webkitdownload.h b/Source/WebKit/gtk/webkit/webkitdownload.h new file mode 100644 index 0000000..a732a57 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitdownload.h @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitdownload_h +#define webkitdownload_h + +#include <webkit/webkitdefines.h> + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_DOWNLOAD (webkit_download_get_type()) +#define WEBKIT_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownload)) +#define WEBKIT_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass)) +#define WEBKIT_IS_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOWNLOAD)) +#define WEBKIT_IS_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOWNLOAD)) +#define WEBKIT_DOWNLOAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass)) + +typedef enum { + WEBKIT_DOWNLOAD_STATUS_ERROR = -1, + WEBKIT_DOWNLOAD_STATUS_CREATED = 0, + WEBKIT_DOWNLOAD_STATUS_STARTED, + WEBKIT_DOWNLOAD_STATUS_CANCELLED, + WEBKIT_DOWNLOAD_STATUS_FINISHED +} WebKitDownloadStatus; + +typedef enum { + WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER, + WEBKIT_DOWNLOAD_ERROR_DESTINATION, + WEBKIT_DOWNLOAD_ERROR_NETWORK +} WebKitDownloadError; + +typedef struct _WebKitDownloadPrivate WebKitDownloadPrivate; + +struct _WebKitDownload { + GObject parent_instance; + + WebKitDownloadPrivate *priv; +}; + +struct _WebKitDownloadClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_download_get_type (void); + +WEBKIT_API WebKitDownload* +webkit_download_new (WebKitNetworkRequest *request); + +WEBKIT_API void +webkit_download_start (WebKitDownload *download); + +WEBKIT_API void +webkit_download_cancel (WebKitDownload *download); + +WEBKIT_API const gchar* +webkit_download_get_uri (WebKitDownload *download); + +WEBKIT_API WebKitNetworkRequest* +webkit_download_get_network_request (WebKitDownload *download); + +WEBKIT_API WebKitNetworkResponse* +webkit_download_get_network_response (WebKitDownload *download); + +WEBKIT_API const gchar* +webkit_download_get_suggested_filename (WebKitDownload *download); + +WEBKIT_API const gchar* +webkit_download_get_destination_uri (WebKitDownload *download); + +WEBKIT_API void +webkit_download_set_destination_uri (WebKitDownload *download, + const gchar *destination_uri); + +WEBKIT_API gdouble +webkit_download_get_progress (WebKitDownload *download); + +WEBKIT_API gdouble +webkit_download_get_elapsed_time (WebKitDownload *download); + +WEBKIT_API guint64 +webkit_download_get_total_size (WebKitDownload *download); + +WEBKIT_API guint64 +webkit_download_get_current_size (WebKitDownload *download); + +WEBKIT_API WebKitDownloadStatus +webkit_download_get_status (WebKitDownload *download); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitdownloadprivate.h b/Source/WebKit/gtk/webkit/webkitdownloadprivate.h new file mode 100644 index 0000000..13cc2a4 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitdownloadprivate.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitdownloadprivate_h +#define webkitdownloadprivate_h + +#include "webkitdownload.h" + +extern "C" { + +WebKitDownload* webkit_download_new_with_handle(WebKitNetworkRequest*, WebCore::ResourceHandle*, const WebCore::ResourceResponse&); + +void webkit_download_set_suggested_filename(WebKitDownload*, const gchar* suggestedFilename); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkiterror.cpp b/Source/WebKit/gtk/webkit/webkiterror.cpp new file mode 100644 index 0000000..e93a5d5 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkiterror.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2008 Luca Bruno <lethalman88@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#include "webkiterror.h" + +GQuark webkit_network_error_quark(void) +{ + return g_quark_from_static_string("webkit-network-error-quark"); +} + +GQuark webkit_policy_error_quark(void) +{ + return g_quark_from_static_string("webkit-policy-error-quark"); +} + +GQuark webkit_plugin_error_quark(void) +{ + return g_quark_from_static_string("webkit-plugin-error-quark"); +} diff --git a/Source/WebKit/gtk/webkit/webkiterror.h b/Source/WebKit/gtk/webkit/webkiterror.h new file mode 100644 index 0000000..8fec949 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkiterror.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2008 Luca Bruno <lethalman88@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkiterror_h +#define webkiterror_h + +#include <glib.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_NETWORK_ERROR webkit_network_error_quark () +#define WEBKIT_POLICY_ERROR webkit_policy_error_quark () +#define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark () + +typedef enum { + WEBKIT_NETWORK_ERROR_FAILED = 399, + WEBKIT_NETWORK_ERROR_TRANSPORT = 300, + WEBKIT_NETWORK_ERROR_UNKNOWN_PROTOCOL = 301, + WEBKIT_NETWORK_ERROR_CANCELLED = 302, + WEBKIT_NETWORK_ERROR_FILE_DOES_NOT_EXIST = 303, +} WebKitNetworkError; + +/* Sync'd with Mac's WebKit Errors */ +typedef enum { + WEBKIT_POLICY_ERROR_FAILED = 199, + WEBKIT_POLICY_ERROR_CANNOT_SHOW_MIME_TYPE = 100, + WEBKIT_POLICY_ERROR_CANNOT_SHOW_URL = 101, + WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE = 102, + WEBKIT_POLICY_ERROR_CANNOT_USE_RESTRICTED_PORT = 103, +} WebKitPolicyError; + +typedef enum { + WEBKIT_PLUGIN_ERROR_FAILED = 299, + WEBKIT_PLUGIN_ERROR_CANNOT_FIND_PLUGIN = 200, + WEBKIT_PLUGIN_ERROR_CANNOT_LOAD_PLUGIN = 201, + WEBKIT_PLUGIN_ERROR_JAVA_UNAVAILABLE = 202, + WEBKIT_PLUGIN_ERROR_CONNECTION_CANCELLED = 203, + WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD = 204, +} WebKitPluginError; + + +WEBKIT_API GQuark +webkit_network_error_quark (void); + +WEBKIT_API GQuark +webkit_policy_error_quark (void); + +WEBKIT_API GQuark +webkit_plugin_error_quark (void); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp new file mode 100644 index 0000000..2523c9b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2010 Arno Renevier + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitgeolocationpolicydecision.h" + +#include "Geolocation.h" +#include "webkitgeolocationpolicydecisionprivate.h" + +using namespace WebCore; + +/** + * SECTION:webkitgeolocationpolicydecision + * @short_description: Liaison between WebKit and the application regarding asynchronous geolocation policy decisions + * + * #WebKitGeolocationPolicyDecision objects are given to the application when + * geolocation-policy-decision-requested signal is emitted. The application + * uses it to tell the engine whether it wants to allow or deny geolocation for + * a given frame. + */ + +G_DEFINE_TYPE(WebKitGeolocationPolicyDecision, webkit_geolocation_policy_decision, G_TYPE_OBJECT); + +struct _WebKitGeolocationPolicyDecisionPrivate { + WebKitWebFrame* frame; + Geolocation* geolocation; +}; + +static void webkit_geolocation_policy_decision_class_init(WebKitGeolocationPolicyDecisionClass* decisionClass) +{ + g_type_class_add_private(decisionClass, sizeof(WebKitGeolocationPolicyDecisionPrivate)); +} + +static void webkit_geolocation_policy_decision_init(WebKitGeolocationPolicyDecision* decision) +{ + decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionPrivate); +} + +WebKitGeolocationPolicyDecision* webkit_geolocation_policy_decision_new(WebKitWebFrame* frame, Geolocation* geolocation) +{ + g_return_val_if_fail(frame, NULL); + WebKitGeolocationPolicyDecision* decision = WEBKIT_GEOLOCATION_POLICY_DECISION(g_object_new(WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, NULL)); + WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv; + + priv->frame = frame; + priv->geolocation = geolocation; + return decision; +} + +/** + * webkit_geolocation_policy_allow + * @decision: a #WebKitGeolocationPolicyDecision + * + * Will send the allow decision to the policy implementer. + * + * Since: 1.1.23 + */ +void webkit_geolocation_policy_allow(WebKitGeolocationPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_GEOLOCATION_POLICY_DECISION(decision)); + + WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv; + priv->geolocation->setIsAllowed(TRUE); +} + +/** + * webkit_geolocation_policy_deny + * @decision: a #WebKitGeolocationPolicyDecision + * + * Will send the deny decision to the policy implementer. + * + * Since: 1.1.23 + */ +void webkit_geolocation_policy_deny(WebKitGeolocationPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_GEOLOCATION_POLICY_DECISION(decision)); + + WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv; + priv->geolocation->setIsAllowed(FALSE); +} + diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h new file mode 100644 index 0000000..27e0ef2 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2010 Arno Renevier + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitgeolocationpolicydecision_h +#define webkitgeolocationpolicydecision_h + +#include <glib-object.h> +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION (webkit_geolocation_policy_decision_get_type()) +#define WEBKIT_GEOLOCATION_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecision)) +#define WEBKIT_GEOLOCATION_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionClass)) +#define WEBKIT_IS_GEOLOCATION_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION)) +#define WEBKIT_IS_GEOLOCATION_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION)) +#define WEBKIT_GEOLOCATION_POLICY_DECISION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionClass)) + +typedef struct _WebKitGeolocationPolicyDecisionPrivate WebKitGeolocationPolicyDecisionPrivate; +struct _WebKitGeolocationPolicyDecision { + GObject parent_instance; + + /*< private >*/ + WebKitGeolocationPolicyDecisionPrivate* priv; +}; + +struct _WebKitGeolocationPolicyDecisionClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_geolocation_policy_decision_get_type (void); + +WEBKIT_API void +webkit_geolocation_policy_allow (WebKitGeolocationPolicyDecision* decision); + +WEBKIT_API void +webkit_geolocation_policy_deny (WebKitGeolocationPolicyDecision* decision); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h new file mode 100644 index 0000000..d250044 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitgeolocationpolicydecisionprivate_h +#define webkitgeolocationpolicydecisionprivate_h + +#include "webkitgeolocationpolicydecision.h" + +extern "C" { + +WebKitGeolocationPolicyDecision* webkit_geolocation_policy_decision_new(WebKitWebFrame*, WebCore::Geolocation*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitglobals.cpp b/Source/WebKit/gtk/webkit/webkitglobals.cpp new file mode 100644 index 0000000..a97d53f --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitglobals.cpp @@ -0,0 +1,282 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * Copyright (C) 2008, 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitglobals.h" + +#include "ApplicationCacheStorage.h" +#include "Chrome.h" +#include "FrameNetworkingContextGtk.h" +#include "GOwnPtr.h" +#include "IconDatabase.h" +#include "Logging.h" +#include "MemoryCache.h" +#include "Page.h" +#include "PageCache.h" +#include "PageGroup.h" +#include "TextEncodingRegistry.h" +#include "Pasteboard.h" +#include "PasteboardHelperGtk.h" +#include "ResourceHandle.h" +#include "ResourceHandleClient.h" +#include "ResourceHandleInternal.h" +#include "ResourceResponse.h" +#include "webkitglobalsprivate.h" +#include "webkitsoupauthdialog.h" +#include "webkitwebdatabase.h" +#include "webkitwebplugindatabaseprivate.h" +#include <libintl.h> +#include <runtime/InitializeThreading.h> +#include <stdlib.h> +#include <wtf/Threading.h> + +static WebKitCacheModel cacheModel = WEBKIT_CACHE_MODEL_DEFAULT; + +using namespace WebCore; + +/** + * SECTION:webkit + * @short_description: Global functions controlling WebKit + * + * WebKit manages many resources which are not related to specific + * views. These functions relate to cross-view limits, such as cache + * sizes, database quotas, and the HTTP session management. + */ + +/** + * webkit_get_default_session: + * + * Retrieves the default #SoupSession used by all web views. + * Note that the session features are added by WebKit on demand, + * so if you insert your own #SoupCookieJar before any network + * traffic occurs, WebKit will use it instead of the default. + * + * Return value: (transfer none): the default #SoupSession + * + * Since: 1.1.1 + */ +SoupSession* webkit_get_default_session () +{ + webkitInit(); + return ResourceHandle::defaultSession(); +} + +/** + * webkit_set_cache_model: + * @cache_model: a #WebKitCacheModel + * + * Specifies a usage model for WebViews, which WebKit will use to + * determine its caching behavior. All web views follow the cache + * model. This cache model determines the RAM and disk space to use + * for caching previously viewed content . + * + * Research indicates that users tend to browse within clusters of + * documents that hold resources in common, and to revisit previously + * visited documents. WebKit and the frameworks below it include + * built-in caches that take advantage of these patterns, + * substantially improving document load speed in browsing + * situations. The WebKit cache model controls the behaviors of all of + * these caches, including various WebCore caches. + * + * Browsers can improve document load speed substantially by + * specifying WEBKIT_CACHE_MODEL_WEB_BROWSER. Applications without a + * browsing interface can reduce memory usage substantially by + * specifying WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER. Default value is + * WEBKIT_CACHE_MODEL_WEB_BROWSER. + * + * Since: 1.1.18 + */ +void webkit_set_cache_model(WebKitCacheModel model) +{ + webkitInit(); + + if (cacheModel == model) + return; + + // FIXME: Add disk cache handling when soup has the API + guint cacheTotalCapacity; + guint cacheMinDeadCapacity; + guint cacheMaxDeadCapacity; + gdouble deadDecodedDataDeletionInterval; + guint pageCacheCapacity; + + switch (model) { + case WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER: + pageCacheCapacity = 0; + cacheTotalCapacity = 0; + cacheMinDeadCapacity = 0; + cacheMaxDeadCapacity = 0; + deadDecodedDataDeletionInterval = 0; + break; + case WEBKIT_CACHE_MODEL_WEB_BROWSER: + // Page cache capacity (in pages). Comment from Mac port: + // (Research indicates that value / page drops substantially after 3 pages.) + pageCacheCapacity = 3; + cacheTotalCapacity = 32 * 1024 * 1024; + cacheMinDeadCapacity = cacheTotalCapacity / 4; + cacheMaxDeadCapacity = cacheTotalCapacity / 2; + deadDecodedDataDeletionInterval = 60; + break; + default: + g_return_if_reached(); + } + + memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity); + memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval); + pageCache()->setCapacity(pageCacheCapacity); + cacheModel = model; +} + +/** + * webkit_get_cache_model: + * + * Returns the current cache model. For more information about this + * value check the documentation of the function + * webkit_set_cache_model(). + * + * Return value: the current #WebKitCacheModel + * + * Since: 1.1.18 + */ +WebKitCacheModel webkit_get_cache_model() +{ + webkitInit(); + return cacheModel; +} + +/** + * webkit_get_web_plugin_database: + * + * Returns the current #WebKitWebPluginDatabase with information about + * all the plugins WebKit knows about in this instance. + * + * Return value: (transfer none): the current #WebKitWebPluginDatabase + * + * Since: 1.3.8 + */ +WebKitWebPluginDatabase* webkit_get_web_plugin_database() +{ + static WebKitWebPluginDatabase* database = 0; + + webkitInit(); + + if (!database) + database = webkit_web_plugin_database_new(); + + return database; +} + + +static GtkWidget* currentToplevelCallback(WebKitSoupAuthDialog* feature, SoupMessage* message, gpointer userData) +{ + gpointer messageData = g_object_get_data(G_OBJECT(message), "resourceHandle"); + if (!messageData) + return NULL; + + ResourceHandle* handle = static_cast<ResourceHandle*>(messageData); + if (!handle) + return NULL; + + ResourceHandleInternal* d = handle->getInternal(); + if (!d) + return NULL; + + WebKit::FrameNetworkingContextGtk* context = static_cast<WebKit::FrameNetworkingContextGtk*>(d->m_context.get()); + if (!context) + return NULL; + + if (!context->coreFrame()) + return NULL; + + GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(context->coreFrame()->page()->chrome()->platformPageClient())); + if (gtk_widget_is_toplevel(toplevel)) + return toplevel; + else + return NULL; +} + +static void closeIconDatabaseOnExit() +{ + iconDatabase()->close(); +} + +void webkitInit() +{ + static bool isInitialized = false; + if (isInitialized) + return; + isInitialized = true; + + bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); + + JSC::initializeThreading(); + WTF::initializeMainThread(); + + WebCore::InitializeLoggingChannelsIfNecessary(); + + // We make sure the text codecs have been initialized, because + // that may only be done by the main thread. + atomicCanonicalTextEncodingName("UTF-8"); + + gchar* databaseDirectory = g_build_filename(g_get_user_data_dir(), "webkit", "databases", NULL); + webkit_set_web_database_directory_path(databaseDirectory); + +#if ENABLE(OFFLINE_WEB_APPLICATIONS) + // FIXME: It should be possible for client applications to override the default appcache location + WebCore::cacheStorage().setCacheDirectory(databaseDirectory); +#endif + g_free(databaseDirectory); + + PageGroup::setShouldTrackVisitedLinks(true); + + Pasteboard::generalPasteboard()->setHelper(WebKit::pasteboardHelperInstance()); + + iconDatabase()->setEnabled(true); + + GOwnPtr<gchar> iconDatabasePath(g_build_filename(g_get_user_data_dir(), "webkit", "icondatabase", NULL)); + iconDatabase()->open(iconDatabasePath.get()); + + atexit(closeIconDatabaseOnExit); + + SoupSession* session = webkit_get_default_session(); + + SoupSessionFeature* authDialog = static_cast<SoupSessionFeature*>(g_object_new(WEBKIT_TYPE_SOUP_AUTH_DIALOG, NULL)); + g_signal_connect(authDialog, "current-toplevel", G_CALLBACK(currentToplevelCallback), NULL); + soup_session_add_feature(session, authDialog); + g_object_unref(authDialog); + + SoupSessionFeature* sniffer = static_cast<SoupSessionFeature*>(g_object_new(SOUP_TYPE_CONTENT_SNIFFER, NULL)); + soup_session_add_feature(session, sniffer); + g_object_unref(sniffer); + + soup_session_add_feature_by_type(session, SOUP_TYPE_CONTENT_DECODER); +} + +namespace WebKit { + +PasteboardHelperGtk* pasteboardHelperInstance() +{ + static PasteboardHelperGtk* helper = new PasteboardHelperGtk(); + return helper; +} + +} /** end namespace WebKit */ + diff --git a/Source/WebKit/gtk/webkit/webkitglobals.h b/Source/WebKit/gtk/webkit/webkitglobals.h new file mode 100644 index 0000000..6d144fc --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitglobals.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitglobals_h +#define webkitglobals_h + +#include "webkitdefines.h" +#include <glib.h> +#include <libsoup/soup.h> + +G_BEGIN_DECLS + +/* + * WebKitCacheModel: + * @WEBKIT_CACHE_MODEL_DEFAULT: The default cache model. This is + * WEBKIT_CACHE_MODEL_WEB_BROWSER. + * @WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER: Disable the cache completely, which + * substantially reduces memory usage. Useful for applications that only + * access local files. + * @WEBKIT_CACHE_MODEL_WEB_BROWSER: Improve document load speed substantially + * by caching previously viewed content. + * + * Enum values used for determining the webview cache model. + */ +typedef enum { + WEBKIT_CACHE_MODEL_DEFAULT, + WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER, + WEBKIT_CACHE_MODEL_WEB_BROWSER +} WebKitCacheModel; + +WEBKIT_API SoupSession* +webkit_get_default_session (void); + +WEBKIT_API WebKitWebPluginDatabase * +webkit_get_web_plugin_database (void); + +WEBKIT_API void +webkit_set_cache_model (WebKitCacheModel cache_model); + +WEBKIT_API WebKitCacheModel +webkit_get_cache_model (void); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitglobalsprivate.h b/Source/WebKit/gtk/webkit/webkitglobalsprivate.h new file mode 100644 index 0000000..5923f2e --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitglobalsprivate.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitglobalsprivate_h +#define webkitglobalsprivate_h + +#include <glib.h> + +#define WEBKIT_PARAM_READABLE ((GParamFlags)(G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)) +#define WEBKIT_PARAM_READWRITE ((GParamFlags)(G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)) + +namespace WebKit { + +class PasteboardHelperGtk; +PasteboardHelperGtk* pasteboardHelperInstance(); + +} + +extern "C" { + +void webkitInit(); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkithittestresult.cpp b/Source/WebKit/gtk/webkit/webkithittestresult.cpp new file mode 100644 index 0000000..9632493 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkithittestresult.cpp @@ -0,0 +1,278 @@ +/* + * Copyright (C) 2009 Collabora Ltd. + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkithittestresult.h" + +#include "GOwnPtr.h" +#include "HitTestResult.h" +#include "KURL.h" +#include "WebKitDOMBinding.h" +#include "WebKitDOMNode.h" +#include "webkitenumtypes.h" +#include "webkitglobals.h" +#include "webkitglobalsprivate.h" +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkithittestresult + * @short_description: The target of a mouse event + * + * This class holds context information about the coordinates + * specified by a GDK event. + */ + +G_DEFINE_TYPE(WebKitHitTestResult, webkit_hit_test_result, G_TYPE_OBJECT) + +struct _WebKitHitTestResultPrivate { + guint context; + char* linkURI; + char* imageURI; + char* mediaURI; + WebKitDOMNode* innerNode; +}; + +enum { + PROP_0, + + PROP_CONTEXT, + PROP_LINK_URI, + PROP_IMAGE_URI, + PROP_MEDIA_URI, + PROP_INNER_NODE +}; + +static void webkit_hit_test_result_finalize(GObject* object) +{ + WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); + WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; + + g_free(priv->linkURI); + g_free(priv->imageURI); + g_free(priv->mediaURI); + + G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->finalize(object); +} + +static void webkit_hit_test_result_dispose(GObject* object) +{ + g_object_unref(WEBKIT_HIT_TEST_RESULT(object)->priv->innerNode); + + G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->dispose(object); +} + +static void webkit_hit_test_result_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec) +{ + WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); + WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; + + switch(propertyID) { + case PROP_CONTEXT: + g_value_set_flags(value, priv->context); + break; + case PROP_LINK_URI: + g_value_set_string(value, priv->linkURI); + break; + case PROP_IMAGE_URI: + g_value_set_string(value, priv->imageURI); + break; + case PROP_MEDIA_URI: + g_value_set_string(value, priv->mediaURI); + break; + case PROP_INNER_NODE: + g_value_set_object(value, priv->innerNode); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_hit_test_result_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec) +{ + WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); + WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; + + switch(propertyID) { + case PROP_CONTEXT: + priv->context = g_value_get_flags(value); + break; + case PROP_LINK_URI: + g_free (priv->linkURI); + priv->linkURI = g_value_dup_string(value); + break; + case PROP_IMAGE_URI: + g_free (priv->imageURI); + priv->imageURI = g_value_dup_string(value); + break; + case PROP_MEDIA_URI: + g_free (priv->mediaURI); + priv->mediaURI = g_value_dup_string(value); + break; + case PROP_INNER_NODE: + priv->innerNode = static_cast<WebKitDOMNode*>(g_value_get_object(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_hit_test_result_class_init(WebKitHitTestResultClass* webHitTestResultClass) +{ + GObjectClass* objectClass = G_OBJECT_CLASS(webHitTestResultClass); + + objectClass->finalize = webkit_hit_test_result_finalize; + objectClass->dispose = webkit_hit_test_result_dispose; + objectClass->get_property = webkit_hit_test_result_get_property; + objectClass->set_property = webkit_hit_test_result_set_property; + + webkitInit(); + + /** + * WebKitHitTestResult:context: + * + * Flags indicating the kind of target that received the event. + * + * Since: 1.1.15 + */ + g_object_class_install_property(objectClass, PROP_CONTEXT, + g_param_spec_flags("context", + _("Context"), + _("Flags indicating the kind of target that received the event."), + WEBKIT_TYPE_HIT_TEST_RESULT_CONTEXT, + WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT, + static_cast<GParamFlags>((WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)))); + + /** + * WebKitHitTestResult:link-uri: + * + * The URI to which the target that received the event points, if any. + * + * Since: 1.1.15 + */ + g_object_class_install_property(objectClass, PROP_LINK_URI, + g_param_spec_string("link-uri", + _("Link URI"), + _("The URI to which the target that received the event points, if any."), + NULL, + static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitHitTestResult:image-uri: + * + * The URI of the image that is part of the target that received the event, if any. + * + * Since: 1.1.15 + */ + g_object_class_install_property(objectClass, PROP_IMAGE_URI, + g_param_spec_string("image-uri", + _("Image URI"), + _("The URI of the image that is part of the target that received the event, if any."), + NULL, + static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitHitTestResult:media-uri: + * + * The URI of the media that is part of the target that received the event, if any. + * + * Since: 1.1.15 + */ + g_object_class_install_property(objectClass, PROP_MEDIA_URI, + g_param_spec_string("media-uri", + _("Media URI"), + _("The URI of the media that is part of the target that received the event, if any."), + NULL, + static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitHitTestResult:inner-node: + * + * The DOM node at the coordinates where the hit test + * happened. Keep in mind that the node might not be + * representative of the information given in the context + * property, since WebKit uses a series of heuristics to figure + * out that information. One common example is inner-node having + * the text node inside the anchor (<a>) tag; WebKit knows the + * whole context and will put WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK + * in the 'context' property, but the user might be confused by + * the lack of any link tag in 'inner-node'. + * + * Since: 1.3.2 + */ + g_object_class_install_property(objectClass, PROP_INNER_NODE, + g_param_spec_object("inner-node", + _("Inner node"), + _("The inner DOM node associated with the hit test result."), + WEBKIT_TYPE_DOM_NODE, + static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + g_type_class_add_private(webHitTestResultClass, sizeof(WebKitHitTestResultPrivate)); +} + +static void webkit_hit_test_result_init(WebKitHitTestResult* web_hit_test_result) +{ + web_hit_test_result->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_hit_test_result, WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResultPrivate); +} + +namespace WebKit { + +WebKitHitTestResult* kit(const WebCore::HitTestResult& result) +{ + guint context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; + GOwnPtr<char> linkURI(0); + GOwnPtr<char> imageURI(0); + GOwnPtr<char> mediaURI(0); + WebKitDOMNode* node = 0; + + if (!result.absoluteLinkURL().isEmpty()) { + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; + linkURI.set(g_strdup(result.absoluteLinkURL().string().utf8().data())); + } + + if (!result.absoluteImageURL().isEmpty()) { + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE; + imageURI.set(g_strdup(result.absoluteImageURL().string().utf8().data())); + } + + if (!result.absoluteMediaURL().isEmpty()) { + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA; + mediaURI.set(g_strdup(result.absoluteMediaURL().string().utf8().data())); + } + + if (result.isSelected()) + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION; + + if (result.isContentEditable()) + context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE; + + if (result.innerNonSharedNode()) + node = kit(result.innerNonSharedNode()); + + return WEBKIT_HIT_TEST_RESULT(g_object_new(WEBKIT_TYPE_HIT_TEST_RESULT, + "link-uri", linkURI.get(), + "image-uri", imageURI.get(), + "media-uri", mediaURI.get(), + "context", context, + "inner-node", node, + NULL)); +} + +} diff --git a/Source/WebKit/gtk/webkit/webkithittestresult.h b/Source/WebKit/gtk/webkit/webkithittestresult.h new file mode 100644 index 0000000..6caa84e --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkithittestresult.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2009 Collabora Ltd. + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkithittestresult_h +#define webkithittestresult_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_HIT_TEST_RESULT (webkit_hit_test_result_get_type()) +#define WEBKIT_HIT_TEST_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResult)) +#define WEBKIT_HIT_TEST_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResultClass)) +#define WEBKIT_IS_HIT_TEST_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_HIT_TEST_RESULT)) +#define WEBKIT_IS_HIT_TEST_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_HIT_TEST_RESULT)) +#define WEBKIT_HIT_TEST_RESULT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_HIT_TEST_RESULT, WebKitHitTestResultClass)) + +typedef struct _WebKitHitTestResultPrivate WebKitHitTestResultPrivate; + +struct _WebKitHitTestResult { + GObject parent_instance; + + /*< private >*/ + WebKitHitTestResultPrivate *priv; +}; + +struct _WebKitHitTestResultClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +/** + * WebKitHitTestResultContext + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT: anywhere in the document. + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK: a hyperlink element. + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE: an image element. + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA: a video or audio element. + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION: the area is selected by + * the user. + * @WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE: the area is + * editable by the user. + */ +typedef enum +{ + WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT = 1 << 1, + WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK = 1 << 2, + WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE = 1 << 3, + WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA = 1 << 4, + WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION = 1 << 5, + WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE = 1 << 6, +} WebKitHitTestResultContext; + +WEBKIT_API GType +webkit_hit_test_result_get_type (void); + +G_END_DECLS + +#endif + diff --git a/Source/WebKit/gtk/webkit/webkithittestresultprivate.h b/Source/WebKit/gtk/webkit/webkithittestresultprivate.h new file mode 100644 index 0000000..237ac27 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkithittestresultprivate.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkithittestresultprivate_h +#define webkithittestresultprivate_h + +#include "HitTestResult.h" +#include "webkithittestresult.h" + +namespace WebKit { + +WebKitHitTestResult* kit(const WebCore::HitTestResult&); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp b/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp new file mode 100644 index 0000000..7005637 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp @@ -0,0 +1,273 @@ +/* + * Copyright (C) 2007, 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Gustavo Noronha Silva + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitnetworkrequest.h" + +#include "GRefPtr.h" +#include "ResourceRequest.h" +#include "webkitglobalsprivate.h" +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitnetworkrequest + * @short_description: The target of a navigation request + * @see_also: #WebKitWebView::navigation-policy-decision-requested + * + * This class represents the network related aspects of a navigation + * request. It is used whenever WebKit wants to provide information + * about a request that will be sent, or has been sent. Inside it you + * can find the URI of the request, and, for valid URIs, a + * #SoupMessage object, which provides access to further information + * such as headers. + * + */ + +G_DEFINE_TYPE(WebKitNetworkRequest, webkit_network_request, G_TYPE_OBJECT); + +struct _WebKitNetworkRequestPrivate { + gchar* uri; + SoupMessage* message; +}; + +enum { + PROP_0, + + PROP_URI, + PROP_MESSAGE, +}; + +static void webkit_network_request_dispose(GObject* object) +{ + WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); + WebKitNetworkRequestPrivate* priv = request->priv; + + if (priv->message) { + g_object_unref(priv->message); + priv->message = NULL; + } + + G_OBJECT_CLASS(webkit_network_request_parent_class)->dispose(object); +} + +static void webkit_network_request_finalize(GObject* object) +{ + WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); + WebKitNetworkRequestPrivate* priv = request->priv; + + g_free(priv->uri); + + G_OBJECT_CLASS(webkit_network_request_parent_class)->finalize(object); +} + +static void webkit_network_request_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec) +{ + WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); + + switch(propertyID) { + case PROP_URI: + g_value_set_string(value, webkit_network_request_get_uri(request)); + break; + case PROP_MESSAGE: + g_value_set_object(value, webkit_network_request_get_message(request)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_network_request_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec) +{ + WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); + WebKitNetworkRequestPrivate* priv = request->priv; + + switch(propertyID) { + case PROP_URI: + webkit_network_request_set_uri(request, g_value_get_string(value)); + break; + case PROP_MESSAGE: + priv->message = SOUP_MESSAGE(g_value_dup_object(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_network_request_class_init(WebKitNetworkRequestClass* requestClass) +{ + GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); + + objectClass->dispose = webkit_network_request_dispose; + objectClass->finalize = webkit_network_request_finalize; + objectClass->get_property = webkit_network_request_get_property; + objectClass->set_property = webkit_network_request_set_property; + + webkitInit(); + + /** + * WebKitNetworkRequest:uri: + * + * The URI to which the request will be made. + * + * Since: 1.1.10 + */ + g_object_class_install_property(objectClass, PROP_URI, + g_param_spec_string("uri", + _("URI"), + _("The URI to which the request will be made."), + NULL, + (GParamFlags)(WEBKIT_PARAM_READWRITE))); + + /** + * WebKitNetworkRequest:message: + * + * The #SoupMessage that backs the request. + * + * Since: 1.1.10 + */ + g_object_class_install_property(objectClass, PROP_MESSAGE, + g_param_spec_object("message", + _("Message"), + _("The SoupMessage that backs the request."), + SOUP_TYPE_MESSAGE, + (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + + g_type_class_add_private(requestClass, sizeof(WebKitNetworkRequestPrivate)); +} + +static void webkit_network_request_init(WebKitNetworkRequest* request) +{ + WebKitNetworkRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestPrivate); + request->priv = priv; +} + +/** + * webkit_network_request_new: + * @uri: an URI + * + * Creates a new #WebKitNetworkRequest initialized with an URI. + * + * Returns: a new #WebKitNetworkRequest, or %NULL if the URI is + * invalid. + */ +WebKitNetworkRequest* webkit_network_request_new(const gchar* uri) +{ + g_return_val_if_fail(uri, NULL); + + return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", uri, NULL)); +} + +/** + * webkit_network_request_set_uri: + * @request: a #WebKitNetworkRequest + * @uri: an URI + * + * Sets the URI held and used by the given request. When the request + * has an associated #SoupMessage, its URI will also be set by this + * call. + * + */ +void webkit_network_request_set_uri(WebKitNetworkRequest* request, const gchar* uri) +{ + g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request)); + g_return_if_fail(uri); + + WebKitNetworkRequestPrivate* priv = request->priv; + + if (priv->uri) + g_free(priv->uri); + priv->uri = g_strdup(uri); + + if (!priv->message) + return; + + SoupURI* soupURI = soup_uri_new(uri); + g_return_if_fail(soupURI); + + soup_message_set_uri(priv->message, soupURI); + soup_uri_free(soupURI); +} + +/** + * webkit_network_request_get_uri: + * @request: a #WebKitNetworkRequest + * + * Returns: the uri of the #WebKitNetworkRequest + * + * Since: 1.0.0 + */ +G_CONST_RETURN gchar* webkit_network_request_get_uri(WebKitNetworkRequest* request) +{ + g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); + + WebKitNetworkRequestPrivate* priv = request->priv; + + if (priv->uri) + return priv->uri; + + SoupURI* soupURI = soup_message_get_uri(priv->message); + priv->uri = soup_uri_to_string(soupURI, FALSE); + return priv->uri; +} + +/** + * webkit_network_request_get_message: + * @request: a #WebKitNetworkRequest + * + * Obtains the #SoupMessage held and used by the given request. Notice + * that modification of the SoupMessage of a request by signal + * handlers is only supported (as in, will only affect what is + * actually sent to the server) where explicitly documented. + * + * Returns: (transfer none): the #SoupMessage + * Since: 1.1.9 + */ +SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request) +{ + g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); + + WebKitNetworkRequestPrivate* priv = request->priv; + + return priv->message; +} + +namespace WebKit { + +WebKitNetworkRequest* kitNew(const WebCore::ResourceRequest& resourceRequest) +{ + GRefPtr<SoupMessage> soupMessage(adoptGRef(resourceRequest.toSoupMessage())); + if (soupMessage) + return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", soupMessage.get(), NULL)); + + return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", resourceRequest.url().string().utf8().data(), NULL)); +} + +WebCore::ResourceRequest core(WebKitNetworkRequest* request) +{ + SoupMessage* soupMessage = webkit_network_request_get_message(request); + if (soupMessage) + return WebCore::ResourceRequest(soupMessage); + + WebCore::KURL url = WebCore::KURL(WebCore::KURL(), String::fromUTF8(webkit_network_request_get_uri(request))); + return WebCore::ResourceRequest(url); +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequest.h b/Source/WebKit/gtk/webkit/webkitnetworkrequest.h new file mode 100644 index 0000000..825ca9e --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkrequest.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitnetworkrequest_h +#define webkitnetworkrequest_h + +#include <glib-object.h> +#include <libsoup/soup.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_NETWORK_REQUEST (webkit_network_request_get_type()) +#define WEBKIT_NETWORK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequest)) +#define WEBKIT_NETWORK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass)) +#define WEBKIT_IS_NETWORK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_NETWORK_REQUEST)) +#define WEBKIT_IS_NETWORK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_NETWORK_REQUEST)) +#define WEBKIT_NETWORK_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass)) + +typedef struct _WebKitNetworkRequestPrivate WebKitNetworkRequestPrivate; + +struct _WebKitNetworkRequest { + GObject parent_instance; + + /*< private >*/ + WebKitNetworkRequestPrivate *priv; +}; + +struct _WebKitNetworkRequestClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_network_request_get_type (void); + +WEBKIT_API WebKitNetworkRequest * +webkit_network_request_new (const gchar *uri); + +WEBKIT_API void +webkit_network_request_set_uri (WebKitNetworkRequest *request, + const gchar* uri); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_network_request_get_uri (WebKitNetworkRequest *request); + +WEBKIT_API SoupMessage * +webkit_network_request_get_message(WebKitNetworkRequest* request); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h b/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h new file mode 100644 index 0000000..84b4593 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitnetworkrequestprivate_h +#define webkitnetworkrequestprivate_h + +namespace WebKit { + +WebCore::ResourceRequest core(WebKitNetworkRequest*); +WebKitNetworkRequest* kitNew(const WebCore::ResourceRequest&); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp new file mode 100644 index 0000000..4b8661b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp @@ -0,0 +1,273 @@ +/* + * Copyright (C) 2007, 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Gustavo Noronha Silva + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitnetworkresponse.h" + +#include "GRefPtr.h" +#include "ResourceResponse.h" +#include "webkitglobalsprivate.h" +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitnetworkresponse + * @short_description: the response given to a network request + * @see_also: #WebKitNetworkRequest + * + * This class represents the network related aspects of a navigation + * response. + * + * Since: 1.1.14 + */ + +G_DEFINE_TYPE(WebKitNetworkResponse, webkit_network_response, G_TYPE_OBJECT); + +struct _WebKitNetworkResponsePrivate { + gchar* uri; + SoupMessage* message; +}; + +#define WEBKIT_NETWORK_RESPONSE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponsePrivate)) + +enum { + PROP_0, + + PROP_URI, + PROP_MESSAGE, +}; + +static void webkit_network_response_dispose(GObject* object) +{ + WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object); + WebKitNetworkResponsePrivate* priv = response->priv; + + if (priv->message) { + g_object_unref(priv->message); + priv->message = NULL; + } + + G_OBJECT_CLASS(webkit_network_response_parent_class)->dispose(object); +} + +static void webkit_network_response_finalize(GObject* object) +{ + WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object); + WebKitNetworkResponsePrivate* priv = response->priv; + + g_free(priv->uri); + + G_OBJECT_CLASS(webkit_network_response_parent_class)->finalize(object); +} + +static void webkit_network_response_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec) +{ + WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object); + + switch(propertyID) { + case PROP_URI: + g_value_set_string(value, webkit_network_response_get_uri(response)); + break; + case PROP_MESSAGE: + g_value_set_object(value, webkit_network_response_get_message(response)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_network_response_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec) +{ + WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object); + WebKitNetworkResponsePrivate* priv = response->priv; + + switch(propertyID) { + case PROP_URI: + webkit_network_response_set_uri(response, g_value_get_string(value)); + break; + case PROP_MESSAGE: + priv->message = SOUP_MESSAGE(g_value_dup_object(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); + } +} + +static void webkit_network_response_class_init(WebKitNetworkResponseClass* responseClass) +{ + GObjectClass* objectClass = G_OBJECT_CLASS(responseClass); + + objectClass->dispose = webkit_network_response_dispose; + objectClass->finalize = webkit_network_response_finalize; + objectClass->get_property = webkit_network_response_get_property; + objectClass->set_property = webkit_network_response_set_property; + + webkitInit(); + + /** + * WebKitNetworkResponse:uri: + * + * The URI to which the response will be made. + * + * Since: 1.1.14 + */ + g_object_class_install_property(objectClass, PROP_URI, + g_param_spec_string("uri", + _("URI"), + _("The URI to which the response will be made."), + NULL, + (GParamFlags)(WEBKIT_PARAM_READWRITE))); + + /** + * WebKitNetworkResponse:message: + * + * The #SoupMessage that backs the response. + * + * Since: 1.1.14 + */ + g_object_class_install_property(objectClass, PROP_MESSAGE, + g_param_spec_object("message", + _("Message"), + _("The SoupMessage that backs the response."), + SOUP_TYPE_MESSAGE, + (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + + g_type_class_add_private(responseClass, sizeof(WebKitNetworkResponsePrivate)); +} + +static void webkit_network_response_init(WebKitNetworkResponse* response) +{ + response->priv = WEBKIT_NETWORK_RESPONSE_GET_PRIVATE(response); +} + +/** + * webkit_network_response_new: + * @uri: an URI + * + * Creates a new #WebKitNetworkResponse initialized with an URI. + * + * Returns: a new #WebKitNetworkResponse, or %NULL if the URI is + * invalid. + * + * Since: 1.1.14 + */ +WebKitNetworkResponse* webkit_network_response_new(const gchar* uri) +{ + g_return_val_if_fail(uri, NULL); + + return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", uri, NULL)); +} + +/** + * webkit_network_response_set_uri: + * @response: a #WebKitNetworkResponse + * @uri: an URI + * + * Sets the URI held and used by the given response. When the response + * has an associated #SoupMessage, its URI will also be set by this + * call. + * + * Since: 1.1.14 + */ +void webkit_network_response_set_uri(WebKitNetworkResponse* response, const gchar* uri) +{ + g_return_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response)); + g_return_if_fail(uri); + + WebKitNetworkResponsePrivate* priv = response->priv; + + if (priv->uri) + g_free(priv->uri); + priv->uri = g_strdup(uri); + + if (!priv->message) + return; + + SoupURI* soupURI = soup_uri_new(uri); + g_return_if_fail(soupURI); + + soup_message_set_uri(priv->message, soupURI); + soup_uri_free(soupURI); +} + +/** + * webkit_network_response_get_uri: + * @response: a #WebKitNetworkResponse + * + * Returns: the uri of the #WebKitNetworkResponse + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_network_response_get_uri(WebKitNetworkResponse* response) +{ + g_return_val_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response), NULL); + + WebKitNetworkResponsePrivate* priv = response->priv; + + if (priv->uri) + return priv->uri; + + SoupURI* soupURI = soup_message_get_uri(priv->message); + priv->uri = soup_uri_to_string(soupURI, FALSE); + return priv->uri; +} + +/** + * webkit_network_response_get_message: + * @response: a #WebKitNetworkResponse + * + * Obtains the #SoupMessage that represents the given response. Notice + * that only the response side of the HTTP conversation is + * represented. + * + * Returns: (transfer none): the #SoupMessage + * Since: 1.1.14 + */ +SoupMessage* webkit_network_response_get_message(WebKitNetworkResponse* response) +{ + g_return_val_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response), NULL); + + WebKitNetworkResponsePrivate* priv = response->priv; + + return priv->message; +} + +namespace WebKit { + +WebCore::ResourceResponse core(WebKitNetworkResponse* response) +{ + SoupMessage* soupMessage = webkit_network_response_get_message(response); + if (soupMessage) + return WebCore::ResourceResponse(soupMessage); + + return WebCore::ResourceResponse(); +} + +WebKitNetworkResponse* kitNew(const WebCore::ResourceResponse& resourceResponse) +{ + GRefPtr<SoupMessage> soupMessage(adoptGRef(resourceResponse.toSoupMessage())); + if (soupMessage) + return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", soupMessage.get(), NULL)); + + return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", resourceResponse.url().string().utf8().data(), NULL)); +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponse.h b/Source/WebKit/gtk/webkit/webkitnetworkresponse.h new file mode 100644 index 0000000..a00308d --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkresponse.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitnewtorkresponse_h +#define webkitnewtorkresponse_h + +#include <glib-object.h> +#include <libsoup/soup.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_NETWORK_RESPONSE (webkit_network_response_get_type()) +#define WEBKIT_NETWORK_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponse)) +#define WEBKIT_NETWORK_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponseClass)) +#define WEBKIT_IS_NETWORK_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_NETWORK_RESPONSE)) +#define WEBKIT_IS_NETWORK_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_NETWORK_RESPONSE)) +#define WEBKIT_NETWORK_RESPONSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponseClass)) + +typedef struct _WebKitNetworkResponsePrivate WebKitNetworkResponsePrivate; + +struct _WebKitNetworkResponse { + GObject parent_instance; + + /*< private >*/ + WebKitNetworkResponsePrivate *priv; +}; + +struct _WebKitNetworkResponseClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_network_response_get_type (void); + +WEBKIT_API WebKitNetworkResponse * +webkit_network_response_new (const gchar *uri); + +WEBKIT_API void +webkit_network_response_set_uri (WebKitNetworkResponse *response, + const gchar* uri); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_network_response_get_uri (WebKitNetworkResponse *response); + +WEBKIT_API SoupMessage * +webkit_network_response_get_message(WebKitNetworkResponse* response); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h b/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h new file mode 100644 index 0000000..ab38a50 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitnetworkresponseprivate_h +#define webkitnetworkresponseprivate_h + +#include "ResourceResponse.h" + +namespace WebKit { + +WebCore::ResourceResponse core(WebKitNetworkResponse*); +WebKitNetworkResponse* kitNew(const WebCore::ResourceResponse&); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp b/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp new file mode 100644 index 0000000..5f9afae --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp @@ -0,0 +1,425 @@ +/* + * Copyright (C) 2009 Martin Robinson, Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitsecurityorigin.h" + +#include "DatabaseTracker.h" +#include "PlatformString.h" +#include "webkitglobalsprivate.h" +#include "webkitsecurityoriginprivate.h" +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitsecurityorigin + * @short_description: A security boundary for web sites + * + * #WebKitSecurityOrigin is a representation of a security domain defined + * by web sites. An origin consists of a host name, a protocol, and a port + * number. Web sites with the same security origin can access each other's + * resources for client-side scripting or database access. + * + * Use #webkit_web_frame_get_security_origin to get the security origin of a + * #WebKitWebFrame. + * + * Database quotas and usages are also defined per security origin. The + * cumulative disk usage of an origin's databases may be retrieved with + * #webkit_security_origin_get_web_database_usage. An origin's quota can be + * adjusted with #webkit_security_origin_set_web_database_quota. + */ + +using namespace WebKit; + +enum { + PROP_0, + + PROP_PROTOCOL, + PROP_HOST, + PROP_PORT, + PROP_DATABASE_USAGE, + PROP_DATABASE_QUOTA +}; + +G_DEFINE_TYPE(WebKitSecurityOrigin, webkit_security_origin, G_TYPE_OBJECT) + +static void webkit_security_origin_finalize(GObject* object) +{ + WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object); + WebKitSecurityOriginPrivate* priv = securityOrigin->priv; + + g_free(priv->protocol); + g_free(priv->host); + + G_OBJECT_CLASS(webkit_security_origin_parent_class)->finalize(object); +} + +static void webkit_security_origin_dispose(GObject* object) +{ + WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object); + WebKitSecurityOriginPrivate* priv = securityOrigin->priv; + + if (!priv->disposed) { + priv->coreOrigin->deref(); + g_hash_table_destroy(priv->webDatabases); + priv->disposed = true; + } + + G_OBJECT_CLASS(webkit_security_origin_parent_class)->dispose(object); +} + +static void webkit_security_origin_set_property(GObject* object, guint propId, const GValue* value, GParamSpec* pspec) +{ + WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object); + + switch (propId) { + case PROP_DATABASE_QUOTA: + webkit_security_origin_set_web_database_quota(securityOrigin, g_value_get_uint64(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); + break; + } +} + +static void webkit_security_origin_get_property(GObject* object, guint propId, GValue* value, GParamSpec* pspec) +{ + WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object); + + switch (propId) { + case PROP_PROTOCOL: + g_value_set_string(value, webkit_security_origin_get_protocol(securityOrigin)); + break; + case PROP_HOST: + g_value_set_string(value, webkit_security_origin_get_host(securityOrigin)); + break; + case PROP_PORT: + g_value_set_uint(value, webkit_security_origin_get_port(securityOrigin)); + break; + case PROP_DATABASE_USAGE: + g_value_set_uint64(value, webkit_security_origin_get_web_database_usage(securityOrigin)); + break; + case PROP_DATABASE_QUOTA: + g_value_set_uint64(value, webkit_security_origin_get_web_database_quota(securityOrigin)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); + break; + } +} + +static GHashTable* webkit_security_origins() +{ + static GHashTable* securityOrigins = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_object_unref); + return securityOrigins; +} + +static void webkit_security_origin_class_init(WebKitSecurityOriginClass* klass) +{ + GObjectClass* gobjectClass = G_OBJECT_CLASS(klass); + gobjectClass->dispose = webkit_security_origin_dispose; + gobjectClass->finalize = webkit_security_origin_finalize; + gobjectClass->set_property = webkit_security_origin_set_property; + gobjectClass->get_property = webkit_security_origin_get_property; + + /** + * WebKitSecurityOrigin:protocol: + * + * The protocol of the security origin. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_PROTOCOL, + g_param_spec_string("protocol", + _("Protocol"), + _("The protocol of the security origin"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitSecurityOrigin:host: + * + * The host of the security origin. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_HOST, + g_param_spec_string("host", + _("Host"), + _("The host of the security origin"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitSecurityOrigin:port: + * + * The port of the security origin. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_PORT, + g_param_spec_uint("port", + _("Port"), + _("The port of the security origin"), + 0, G_MAXUSHORT, 0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitSecurityOrigin:web-database-usage: + * + * The cumulative size of all web databases in the security origin in bytes. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_DATABASE_USAGE, + g_param_spec_uint64("web-database-usage", + _("Web Database Usage"), + _("The cumulative size of all web databases in the security origin"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READABLE)); + /** + * WebKitSecurityOrigin:web-database-quota: + * + * The web database qouta of the security origin in bytes. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_DATABASE_QUOTA, + g_param_spec_uint64("web-database-quota", + _("Web Database Quota"), + _("The web database quota of the security origin in bytes"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READWRITE)); + + g_type_class_add_private(klass, sizeof(WebKitSecurityOriginPrivate)); +} + +static void webkit_security_origin_init(WebKitSecurityOrigin* securityOrigin) +{ + WebKitSecurityOriginPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(securityOrigin, WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginPrivate); + priv->webDatabases = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref); + securityOrigin->priv = priv; +} + +/** + * webkit_security_origin_get_protocol: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns the protocol for the security origin. + * + * Returns: the protocol for the security origin + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_security_origin_get_protocol(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL); + + WebKitSecurityOriginPrivate* priv = securityOrigin->priv; + WTF::String protocol = priv->coreOrigin->protocol(); + + if (!priv->protocol) + priv->protocol = g_strdup(protocol.utf8().data()); + + return priv->protocol; +} + +/** + * webkit_security_origin_get_host: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns the hostname for the security origin. + * + * Returns: the hostname for the security origin + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_security_origin_get_host(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL); + + WebKitSecurityOriginPrivate* priv = securityOrigin->priv; + WTF::String host = priv->coreOrigin->host(); + + if (!priv->host) + priv->host = g_strdup(host.utf8().data()); + + return priv->host; +} + +/** + * webkit_security_origin_get_port: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns the port for the security origin. + * + * Returns: the port for the security origin + * + * Since: 1.1.14 + **/ +guint webkit_security_origin_get_port(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0); + + WebCore::SecurityOrigin* coreOrigin = core(securityOrigin); + return coreOrigin->port(); +} + +/** + * webkit_security_origin_get_web_database_usage: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns the cumulative size of all Web Database database's in the origin + * in bytes. + * + * Returns: the cumulative size of all databases + * + * Since: 1.1.14 + **/ +guint64 webkit_security_origin_get_web_database_usage(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0); + +#if ENABLE(DATABASE) + WebCore::SecurityOrigin* coreOrigin = core(securityOrigin); + return WebCore::DatabaseTracker::tracker().usageForOrigin(coreOrigin); +#else + return 0; +#endif +} + +/** + * webkit_security_origin_get_web_database_quota: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns the quota for Web Database storage of the security origin + * in bytes. + * + * Returns: the Web Database quota + * + * Since: 1.1.14 + **/ +guint64 webkit_security_origin_get_web_database_quota(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0); + +#if ENABLE(DATABASE) + WebCore::SecurityOrigin* coreOrigin = core(securityOrigin); + return WebCore::DatabaseTracker::tracker().quotaForOrigin(coreOrigin); +#else + return 0; +#endif +} + +/** + * webkit_security_origin_set_web_database_quota: + * @securityOrigin: a #WebKitSecurityOrigin + * @quota: a new Web Database quota in bytes + * + * Adjust the quota for Web Database storage of the security origin + * + * Since: 1.1.14 + **/ +void webkit_security_origin_set_web_database_quota(WebKitSecurityOrigin* securityOrigin, guint64 quota) +{ + g_return_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin)); + +#if ENABLE(DATABASE) + WebCore::SecurityOrigin* coreOrigin = core(securityOrigin); + WebCore::DatabaseTracker::tracker().setQuota(coreOrigin, quota); +#endif +} + +/** + * webkit_security_origin_get_all_web_databases: + * @securityOrigin: a #WebKitSecurityOrigin + * + * Returns a list of all Web Databases in the security origin. + * + * Returns: (transfer container) (element-type WebKitWebDatabase): a + * #GList of databases in the security origin. + * + * Since: 1.1.14 + **/ +GList* webkit_security_origin_get_all_web_databases(WebKitSecurityOrigin* securityOrigin) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL); + GList* databases = NULL; + +#if ENABLE(DATABASE) + WebCore::SecurityOrigin* coreOrigin = core(securityOrigin); + Vector<WTF::String> databaseNames; + + if (!WebCore::DatabaseTracker::tracker().databaseNamesForOrigin(coreOrigin, databaseNames)) + return NULL; + + for (unsigned i = 0; i < databaseNames.size(); ++i) { + WebKitWebDatabase* database = webkit_security_origin_get_web_database(securityOrigin, databaseNames[i].utf8().data()); + databases = g_list_append(databases, database); + } +#endif + + return databases; +} + +WebKitWebDatabase* webkit_security_origin_get_web_database(WebKitSecurityOrigin* securityOrigin, const gchar* databaseName) +{ + g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL); + + WebKitSecurityOriginPrivate* priv = securityOrigin->priv; + GHashTable* databaseHash = priv->webDatabases; + WebKitWebDatabase* database = (WebKitWebDatabase*) g_hash_table_lookup(databaseHash, databaseName); + + if (!database) { + database = WEBKIT_WEB_DATABASE(g_object_new(WEBKIT_TYPE_WEB_DATABASE, + "security-origin", securityOrigin, + "name", databaseName, + NULL)); + g_hash_table_insert(databaseHash, g_strdup(databaseName), database); + } + + return database; +} + +namespace WebKit { + +WebCore::SecurityOrigin* core(WebKitSecurityOrigin* securityOrigin) +{ + ASSERT(securityOrigin); + + return securityOrigin->priv->coreOrigin.get(); +} + +WebKitSecurityOrigin* kit(WebCore::SecurityOrigin* coreOrigin) +{ + ASSERT(coreOrigin); + + GHashTable* table = webkit_security_origins(); + WebKitSecurityOrigin* origin = (WebKitSecurityOrigin*) g_hash_table_lookup(table, coreOrigin); + + if (!origin) { + origin = WEBKIT_SECURITY_ORIGIN(g_object_new(WEBKIT_TYPE_SECURITY_ORIGIN, NULL)); + origin->priv->coreOrigin = coreOrigin; + g_hash_table_insert(table, coreOrigin, origin); + } + + return origin; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitsecurityorigin.h b/Source/WebKit/gtk/webkit/webkitsecurityorigin.h new file mode 100644 index 0000000..24ebe06 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitsecurityorigin.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2009 Martin Robinson, Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitsecurityorigin_h +#define webkitsecurityorigin_h + +#include "webkitwebdatabase.h" + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_SECURITY_ORIGIN (webkit_security_origin_get_type()) +#define WEBKIT_SECURITY_ORIGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOrigin)) +#define WEBKIT_SECURITY_ORIGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginClass)) +#define WEBKIT_IS_SECURITY_ORIGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_SECURITY_ORIGIN)) +#define WEBKIT_IS_SECURITY_ORIGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_SECURITY_ORIGIN)) +#define WEBKIT_SECURITY_ORIGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginClass)) + +typedef struct _WebKitSecurityOriginPrivate WebKitSecurityOriginPrivate; + +struct _WebKitSecurityOrigin { + GObject parent_instance; + + /*< private >*/ + WebKitSecurityOriginPrivate* priv; +}; + +struct _WebKitSecurityOriginClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); +}; + +WEBKIT_API GType +webkit_security_origin_get_type (void); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_security_origin_get_protocol (WebKitSecurityOrigin* securityOrigin); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_security_origin_get_host (WebKitSecurityOrigin* securityOrigin); + +WEBKIT_API guint +webkit_security_origin_get_port (WebKitSecurityOrigin* securityOrigin); + +WEBKIT_API guint64 +webkit_security_origin_get_web_database_usage (WebKitSecurityOrigin* securityOrigin); + +WEBKIT_API guint64 +webkit_security_origin_get_web_database_quota (WebKitSecurityOrigin* securityOrigin); + +WEBKIT_API void +webkit_security_origin_set_web_database_quota (WebKitSecurityOrigin* securityOrigin, guint64 quota); + +WEBKIT_API GList * +webkit_security_origin_get_all_web_databases (WebKitSecurityOrigin* securityOrigin); + +G_END_DECLS + +#endif /* __WEBKIT_SECURITY_ORIGIN_H__ */ diff --git a/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h b/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h new file mode 100644 index 0000000..5a4a87b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitsecurityoriginprivate_h +#define webkitnavigationactionprivate_h + +#include "SecurityOrigin.h" +#include "webkitsecurityorigin.h" + +namespace WebKit { + +WebKitSecurityOrigin* kit(WebCore::SecurityOrigin*); +WebCore::SecurityOrigin* core(WebKitSecurityOrigin*); + +} + +extern "C" { + +struct _WebKitSecurityOriginPrivate { + RefPtr<WebCore::SecurityOrigin> coreOrigin; + gchar* protocol; + gchar* host; + GHashTable* webDatabases; + + gboolean disposed; +}; + +WEBKIT_API WebKitWebDatabase* webkit_security_origin_get_web_database(WebKitSecurityOrigin*, const char*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c new file mode 100644 index 0000000..c407e6a --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c @@ -0,0 +1,372 @@ +/* + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#define LIBSOUP_I_HAVE_READ_BUG_594377_AND_KNOW_SOUP_PASSWORD_MANAGER_MIGHT_GO_AWAY + +#include <glib/gi18n-lib.h> +#include <gtk/gtk.h> +#include <libsoup/soup.h> + +#include "GtkVersioning.h" +#include "webkitmarshal.h" +#include "webkitsoupauthdialog.h" + +/** + * SECTION:webkitsoupauthdialog + * @short_description: A #SoupSessionFeature to provide a simple + * authentication dialog for HTTP basic auth support. + * + * #WebKitSoupAuthDialog is a #SoupSessionFeature that you can attach to your + * #SoupSession to provide a simple authentication dialog while + * handling HTTP basic auth. It is built as a simple C-only module + * to ease reuse. + */ + +static void webkit_soup_auth_dialog_session_feature_init(SoupSessionFeatureInterface* feature_interface, gpointer interface_data); +static void attach(SoupSessionFeature* manager, SoupSession* session); +static void detach(SoupSessionFeature* manager, SoupSession* session); + +enum { + CURRENT_TOPLEVEL, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE_WITH_CODE(WebKitSoupAuthDialog, webkit_soup_auth_dialog, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE(SOUP_TYPE_SESSION_FEATURE, + webkit_soup_auth_dialog_session_feature_init)) + +static void webkit_soup_auth_dialog_class_init(WebKitSoupAuthDialogClass* klass) +{ + GObjectClass* object_class = G_OBJECT_CLASS(klass); + + /** + * WebKitSoupAuthDialog::current-toplevel: + * @authDialog: the object on which the signal is emitted + * @message: the #SoupMessage being used in the authentication process + * + * This signal is emitted by the @authDialog when it needs to know + * the current toplevel widget in order to correctly set the + * transiency for the authentication dialog. + * + * Return value: (transfer none): the current toplevel #GtkWidget or %NULL if there's none + * + * Since: 1.1.1 + */ + signals[CURRENT_TOPLEVEL] = + g_signal_new("current-toplevel", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(WebKitSoupAuthDialogClass, current_toplevel), + NULL, NULL, + webkit_marshal_OBJECT__OBJECT, + GTK_TYPE_WIDGET, 1, + SOUP_TYPE_MESSAGE); +} + +static void webkit_soup_auth_dialog_init(WebKitSoupAuthDialog* instance) +{ +} + +static void webkit_soup_auth_dialog_session_feature_init(SoupSessionFeatureInterface *feature_interface, + gpointer interface_data) +{ + feature_interface->attach = attach; + feature_interface->detach = detach; +} + +typedef struct _WebKitAuthData { + SoupMessage* msg; + SoupAuth* auth; + SoupSession* session; + SoupSessionFeature* manager; + GtkWidget* loginEntry; + GtkWidget* passwordEntry; + GtkWidget* checkButton; + char *username; + char *password; +} WebKitAuthData; + +static void free_authData(WebKitAuthData* authData) +{ + g_object_unref(authData->msg); + g_free(authData->username); + g_free(authData->password); + g_slice_free(WebKitAuthData, authData); +} + +#ifdef SOUP_TYPE_PASSWORD_MANAGER +static void save_password_callback(SoupMessage* msg, WebKitAuthData* authData) +{ + /* Anything but 401 and 5xx means the password was accepted */ + if (msg->status_code != 401 && msg->status_code < 500) + soup_auth_save_password(authData->auth, authData->username, authData->password); + + /* Disconnect the callback. If the authentication succeeded we are + * done, and if it failed we'll create a new authData and we'll + * connect to 'got-headers' again in response_callback */ + g_signal_handlers_disconnect_by_func(msg, save_password_callback, authData); + + free_authData(authData); +} +#endif + +static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData) +{ + gboolean freeAuthData = TRUE; + + if (response_id == GTK_RESPONSE_OK) { + authData->username = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData->loginEntry))); + authData->password = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData->passwordEntry))); + + soup_auth_authenticate(authData->auth, authData->username, authData->password); + +#ifdef SOUP_TYPE_PASSWORD_MANAGER + if (authData->checkButton && + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData->checkButton))) { + g_signal_connect(authData->msg, "got-headers", G_CALLBACK(save_password_callback), authData); + freeAuthData = FALSE; + } +#endif + } + + soup_session_unpause_message(authData->session, authData->msg); + if (freeAuthData) + free_authData(authData); + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +static GtkWidget * +table_add_entry(GtkWidget* table, + int row, + const char* label_text, + const char* value, + gpointer user_data) +{ + GtkWidget* entry; + GtkWidget* label; + + label = gtk_label_new(label_text); + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + + entry = gtk_entry_new(); + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + + if (value) + gtk_entry_set_text(GTK_ENTRY(entry), value); + + gtk_table_attach(GTK_TABLE(table), label, + 0, 1, row, row + 1, + GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + gtk_table_attach_defaults(GTK_TABLE(table), entry, + 1, 2, row, row + 1); + + return entry; +} + +static gboolean session_can_save_passwords(SoupSession* session) +{ +#ifdef SOUP_TYPE_PASSWORD_MANAGER + return soup_session_get_feature(session, SOUP_TYPE_PASSWORD_MANAGER) != NULL; +#else + return FALSE; +#endif +} + +static void show_auth_dialog(WebKitAuthData* authData, const char* login, const char* password) +{ + GtkWidget* toplevel; + GtkWidget* widget; + GtkDialog* dialog; + GtkWindow* window; + GtkWidget* entryContainer; + GtkWidget* hbox; + GtkWidget* mainVBox; + GtkWidget* vbox; + GtkWidget* icon; + GtkWidget* table; + GtkWidget* serverMessageDescriptionLabel; + GtkWidget* serverMessageLabel; + GtkWidget* descriptionLabel; + char* description; + const char* realm; + gboolean hasRealm; + SoupURI* uri; + GtkWidget* rememberBox; + GtkWidget* checkButton; + + /* From GTK+ gtkmountoperation.c, modified and simplified. LGPL 2 license */ + + widget = gtk_dialog_new(); + window = GTK_WINDOW(widget); + dialog = GTK_DIALOG(widget); + + gtk_dialog_add_buttons(dialog, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_OK, + NULL); + + /* Set the dialog up with HIG properties */ + gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); + gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(dialog)), 2); /* 2 * 5 + 2 = 12 */ + gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_action_area(dialog)), 5); + gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_action_area(dialog)), 6); + + gtk_window_set_resizable(window, FALSE); + gtk_window_set_title(window, ""); + gtk_window_set_icon_name(window, GTK_STOCK_DIALOG_AUTHENTICATION); + + gtk_dialog_set_default_response(dialog, GTK_RESPONSE_OK); + + /* Get the current toplevel */ + g_signal_emit(authData->manager, signals[CURRENT_TOPLEVEL], 0, authData->msg, &toplevel); + + if (toplevel) + gtk_window_set_transient_for(window, GTK_WINDOW(toplevel)); + + /* Build contents */ + hbox = gtk_hbox_new(FALSE, 12); + gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(dialog)), hbox, TRUE, TRUE, 0); + + icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, + GTK_ICON_SIZE_DIALOG); + + gtk_misc_set_alignment(GTK_MISC(icon), 0.5, 0.0); + gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0); + + mainVBox = gtk_vbox_new(FALSE, 18); + gtk_box_pack_start(GTK_BOX(hbox), mainVBox, TRUE, TRUE, 0); + + uri = soup_message_get_uri(authData->msg); + description = g_strdup_printf(_("A username and password are being requested by the site %s"), uri->host); + descriptionLabel = gtk_label_new(description); + g_free(description); + gtk_misc_set_alignment(GTK_MISC(descriptionLabel), 0.0, 0.5); + gtk_label_set_line_wrap(GTK_LABEL(descriptionLabel), TRUE); + gtk_box_pack_start(GTK_BOX(mainVBox), GTK_WIDGET(descriptionLabel), + FALSE, FALSE, 0); + + vbox = gtk_vbox_new(FALSE, 6); + gtk_box_pack_start(GTK_BOX(mainVBox), vbox, FALSE, FALSE, 0); + + /* The table that holds the entries */ + entryContainer = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); + + gtk_alignment_set_padding(GTK_ALIGNMENT(entryContainer), + 0, 0, 0, 0); + + gtk_box_pack_start(GTK_BOX(vbox), entryContainer, + FALSE, FALSE, 0); + + realm = soup_auth_get_realm(authData->auth); + // Checking that realm is not an empty string + hasRealm = (realm && (strlen(realm) > 0)); + + table = gtk_table_new(hasRealm ? 3 : 2, 2, FALSE); + gtk_table_set_col_spacings(GTK_TABLE(table), 12); + gtk_table_set_row_spacings(GTK_TABLE(table), 6); + gtk_container_add(GTK_CONTAINER(entryContainer), table); + + if (hasRealm) { + serverMessageDescriptionLabel = gtk_label_new(_("Server message:")); + serverMessageLabel = gtk_label_new(realm); + gtk_misc_set_alignment(GTK_MISC(serverMessageDescriptionLabel), 0.0, 0.5); + gtk_label_set_line_wrap(GTK_LABEL(serverMessageDescriptionLabel), TRUE); + gtk_misc_set_alignment(GTK_MISC(serverMessageLabel), 0.0, 0.5); + gtk_label_set_line_wrap(GTK_LABEL(serverMessageLabel), TRUE); + + gtk_table_attach_defaults(GTK_TABLE(table), serverMessageDescriptionLabel, + 0, 1, 0, 1); + gtk_table_attach_defaults(GTK_TABLE(table), serverMessageLabel, + 1, 2, 0, 1); + } + + authData->loginEntry = table_add_entry(table, hasRealm ? 1 : 0, _("Username:"), + login, NULL); + authData->passwordEntry = table_add_entry(table, hasRealm ? 2 : 1, _("Password:"), + password, NULL); + + gtk_entry_set_visibility(GTK_ENTRY(authData->passwordEntry), FALSE); + + if (session_can_save_passwords(authData->session)) { + rememberBox = gtk_vbox_new(FALSE, 6); + gtk_box_pack_start(GTK_BOX(vbox), rememberBox, + FALSE, FALSE, 0); + checkButton = gtk_check_button_new_with_mnemonic(_("_Remember password")); + if (login && password) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE); + gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE); + gtk_box_pack_start(GTK_BOX(rememberBox), checkButton, FALSE, FALSE, 0); + authData->checkButton = checkButton; + } + + g_signal_connect(dialog, "response", G_CALLBACK(response_callback), authData); + gtk_widget_show_all(widget); +} + +static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying, gpointer user_data) +{ + SoupURI* uri; + WebKitAuthData* authData; + SoupSessionFeature* manager = (SoupSessionFeature*)user_data; +#ifdef SOUP_TYPE_PASSWORD_MANAGER + GSList* users; +#endif + const char *login, *password; + + soup_session_pause_message(session, msg); + /* We need to make sure the message sticks around when pausing it */ + g_object_ref(msg); + + uri = soup_message_get_uri(msg); + authData = g_slice_new0(WebKitAuthData); + authData->msg = msg; + authData->auth = auth; + authData->session = session; + authData->manager = manager; + + login = password = NULL; + +#ifdef SOUP_TYPE_PASSWORD_MANAGER + users = soup_auth_get_saved_users(auth); + if (users) { + login = users->data; + password = soup_auth_get_saved_password(auth, login); + g_slist_free(users); + } +#endif + + show_auth_dialog(authData, login, password); +} + +static void attach(SoupSessionFeature* manager, SoupSession* session) +{ + g_signal_connect(session, "authenticate", G_CALLBACK(session_authenticate), manager); +} + +static void detach(SoupSessionFeature* manager, SoupSession* session) +{ + g_signal_handlers_disconnect_by_func(session, session_authenticate, manager); +} + + diff --git a/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h new file mode 100644 index 0000000..08b7c9f --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitsoupauthdialog_h +#define webkitsoupauthdialog_h + +#include <gtk/gtk.h> +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_SOUP_AUTH_DIALOG (webkit_soup_auth_dialog_get_type ()) +#define WEBKIT_SOUP_AUTH_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog)) +#define WEBKIT_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog)) +#define WEBKIT_IS_SOUP_AUTH_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), WEBKIT_TYPE_SOUP_AUTH_DIALOG)) +#define WEBKIT_IS_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WEBKIT_TYPE_SOUP_AUTH_DIALOG)) +#define WEBKIT_SOUP_AUTH_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog)) + +typedef struct { + GObject parent_instance; +} WebKitSoupAuthDialog; + +typedef struct { + GObjectClass parent_class; + + GtkWidget* (*current_toplevel) (WebKitSoupAuthDialog* authDialog, SoupMessage* message); +} WebKitSoupAuthDialogClass; + +WEBKIT_API GType +webkit_soup_auth_dialog_get_type (void); + +G_END_DECLS + +#endif /* webkitsoupauthdialog_h */ diff --git a/Source/WebKit/gtk/webkit/webkitversion.cpp b/Source/WebKit/gtk/webkit/webkitversion.cpp new file mode 100644 index 0000000..62750f5 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitversion.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitversion.h" + +/** + * webkit_major_version: + * + * The major version number of the WebKit that is linked against. + * + * Return value: The major version + * + * Since: 1.0.1 + */ +guint webkit_major_version() +{ + return WEBKIT_MAJOR_VERSION; +} + +/** + * webkit_minor_version: + * + * The minor version number of the WebKit that is linked against. + * + * Return value: The minor version + * + * Since: 1.0.1 + */ +guint webkit_minor_version() +{ + return WEBKIT_MINOR_VERSION; +} + +/** + * webkit_micro_version: + * + * The micro version number of the WebKit that is linked against. + * + * Return value: The micro version + * + * Since: 1.0.1 + */ +guint webkit_micro_version() +{ + return WEBKIT_MICRO_VERSION; +} diff --git a/Source/WebKit/gtk/webkit/webkitversion.h.in b/Source/WebKit/gtk/webkit/webkitversion.h.in new file mode 100644 index 0000000..ce6b569 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitversion.h.in @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitversion_h +#define webkitversion_h + +#include <glib.h> +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_MAJOR_VERSION (@WEBKIT_MAJOR_VERSION@) +#define WEBKIT_MINOR_VERSION (@WEBKIT_MINOR_VERSION@) +#define WEBKIT_MICRO_VERSION (@WEBKIT_MICRO_VERSION@) +#define WEBKIT_USER_AGENT_MAJOR_VERSION (@WEBKIT_USER_AGENT_MAJOR_VERSION@) +#define WEBKIT_USER_AGENT_MINOR_VERSION (@WEBKIT_USER_AGENT_MINOR_VERSION@) +#define WEBKITGTK_API_VERSION (@WEBKITGTK_API_VERSION@) + +#define WEBKIT_CHECK_VERSION(major, minor, micro) \ + (WEBKIT_MAJOR_VERSION > (major) || \ + (WEBKIT_MAJOR_VERSION == (major) && WEBKIT_MINOR_VERSION > (minor)) || \ + (WEBKIT_MAJOR_VERSION == (major) && WEBKIT_MINOR_VERSION == (minor) && \ + WEBKIT_MICRO_VERSION >= (micro))) + +WEBKIT_API guint +webkit_major_version (void); + +WEBKIT_API guint +webkit_minor_version (void); + +WEBKIT_API guint +webkit_micro_version (void); + +WEBKIT_API gboolean +webkit_check_version (guint major, guint minor, guint micro); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp b/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp new file mode 100644 index 0000000..9a98e44 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp @@ -0,0 +1,571 @@ +/* + * Copyright (C) 2010 Joone Hur <joone@kldp.org> + * Copyright (C) 2010 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitviewportattributes.h" + +#include "Chrome.h" +#include "Frame.h" +#include "Page.h" +#include "webkitglobalsprivate.h" +#include "webkitviewportattributesprivate.h" +#include "webkitwebviewprivate.h" +#include <glib/gi18n-lib.h> + +/** + * SECTION:webkitviewportattributes + * @short_description: Represents the viewport properties of a web page + * @see_also: #WebKitWebView::viewport-attributes-recompute-requested + * @see_also: #WebKitWebView::viewport-attributes-changed + * + * #WebKitViewportAttributes offers the viewport properties to user agents to + * control the viewport layout. It contains the viewport size, initial scale with limits, + * and information about whether a user is able to scale the contents in the viewport. + * This makes a web page fit the device screen. + * + * The #WebKitWebView::viewport-attributes-changed signal will be emitted with #WebKitViewportAttributes + * when the viewport attributes are updated in the case of loading web pages contain + * the viewport properties and calling webkit_viewport_attributes_recompute. + * + * If the device size, available size, desktop width, or device DPI needs to be changed due to + * a consequence of an explicit browser request (caused by screen rotation, resizing, or similar reasons), + * You should call #webkit_viewport_attributes_recompute to recompute the viewport properties and + * override those values in the handler of #WebKitWebView::viewport-attributes-recompute-requested signal. + * + * For more information on the viewport properties, refer to the Safari reference library at + * http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html + * + * <informalexample><programlisting> + * /<!-- -->* Connect to the viewport-attributes-changes signal *<!-- -->/ + * WebKitViewportAttributes* attributes = webkit_web_view_get_viewport_attributes (web_view); + * g_signal_connect (web_view, "viewport-attributes-recompute-requested", G_CALLBACK (viewport_recompute_cb), window); + * g_signal_connect (web_view, "viewport-attributes-changed", G_CALLBACK (viewport_changed_cb), window); + * g_signal_connect (attributes, "notify::valid", G_CALLBACK (viewport_valid_changed_cb), web_view); + * + * /<!-- -->* Handle the viewport-attributes-recompute-requested signal to override the device width *<!-- -->/ + * static void + * viewport_recompute_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, GtkWidget* window) + * { + * int override_available_width = 480; + * g_object_set (G_OBJECT(attributes), "available-width", override_available_width, NULL); + * } + * + * /<!-- -->* Handle the viewport-attributes-changed signal to recompute the initial scale factor *<!-- -->/ + * static void + * viewport_changed_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, gpointer data) + * { + * gfloat initialScale; + * g_object_get (G_OBJECT (atributes), "initial-scale-factor", &initialScale, NULL); + * webkit_web_view_set_zoom_level (web_view, initialScale); + * } + * + * /<!-- -->* Handle the notify::valid signal to initialize the zoom level *<!-- -->/ + * static void + * viewport_valid_changed_cb (WebKitViewportAttributes* attributes, GParamSpec* pspec, WebKitWebView* web_view) + * { + * gboolean is_valid; + * g_object_get (attributes, "valid", &is_valid, NULL); + * if (!is_valid) + * webkit_web_view_set_zoom_level (web_view, 1.0); + * } + * </programlisting></informalexample> + */ + +using namespace WebKit; +using namespace WebCore; + +enum { + PROP_0, + + PROP_DEVICE_WIDTH, + PROP_DEVICE_HEIGHT, + PROP_AVAILABLE_WIDTH, + PROP_AVAILABLE_HEIGHT, + PROP_DESKTOP_WIDTH, + PROP_DEVICE_DPI, + PROP_WIDTH, + PROP_HEIGHT, + PROP_INITIAL_SCALE_FACTOR, + PROP_MINIMUM_SCALE_FACTOR, + PROP_MAXIMUM_SCALE_FACTOR, + PROP_DEVICE_PIXEL_RATIO, + PROP_USER_SCALABLE, + PROP_VALID +}; + +G_DEFINE_TYPE(WebKitViewportAttributes, webkit_viewport_attributes, G_TYPE_OBJECT); + +static void webkit_viewport_attributes_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* paramSpec); +static void webkit_viewport_attributes_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* paramSpec); + +static void webkit_viewport_attributes_class_init(WebKitViewportAttributesClass* kclass) +{ + GObjectClass* gobjectClass = G_OBJECT_CLASS(kclass); + gobjectClass->get_property = webkit_viewport_attributes_get_property; + gobjectClass->set_property = webkit_viewport_attributes_set_property; + + /** + * WebKitViewportAttributs:device-width: + * + * The width of the screen. This value is always automatically + * pre-computed during a viewport attributes recomputation, and + * can be overridden by the handler of + * WebKitWebView::viewport-attributes-recompute-requested. You + * should not do that unless you have a very good reason. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_DEVICE_WIDTH, + g_param_spec_int( + "device-width", + _("Device Width"), + _("The width of the screen."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:device-height: + * + * The height of the screen. This value is always automatically + * pre-computed during a viewport attributes recomputation, and + * can be overriden by the handler of + * WebKitWebView::viewport-attributes-recompute-requested. You + * should not do that unless you have a very good reason. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_DEVICE_HEIGHT, + g_param_spec_int( + "device-height", + _("Device Height"), + _("The height of the screen."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:available-width: + * + * The width of the current visible area. This will usually be the + * same as the space allocated to the widget, but in some cases + * you may have decided to make the widget bigger than the visible + * area. This value is by default initialized to the size + * allocated by the widget, but you can override it in the handler + * of WebKitWebView::viewport-attributes-recompute-requested to + * let the engine know what the visible area is. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_AVAILABLE_WIDTH, + g_param_spec_int( + "available-width", + _("Available Width"), + _("The width of the visible area."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:available-height: + * + * The height of the current visible area. This will usually be the + * same as the space allocated to the widget, but in some cases + * you may have decided to make the widget bigger than the visible + * area. This value is by default initialized to the size + * allocated by the widget, but you can override it in the handler + * of WebKitWebView::viewport-attributes-recompute-requested to + * let the engine know what the visible area is. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_AVAILABLE_HEIGHT, + g_param_spec_int( + "available-height", + _("Available Height"), + _("The height of the visible area."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:desktop-width: + * + * The width of viewport that works well for most web pages designed for + * desktop. This value is initialized to 980 pixels by default and used + * during a viewport attributes recomputation. Also, it can be overriden by + * the handler of WebKitWebView::viewport-attributes-recompute-requested. + * You should not do that unless you have a very good reason. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_DESKTOP_WIDTH, + g_param_spec_int( + "desktop-width", + _("Desktop Width"), + _("The width of viewport that works well for most web pages designed for desktop."), + 0, + G_MAXINT, + 980, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:device-dpi: + * + * The number of dots per inch of the screen. This value is + * initialized to 160 dpi by default and used during a viewport + * attributes recomputation, because it is the dpi of the original + * iPhone and Android devices. Also, it can be overriden by the + * handler of WebKitWebView::viewport-attributes-recompute-requested. + * You should not do that unless you have a very good reason. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_DEVICE_DPI, + g_param_spec_int( + "device-dpi", + _("Device DPI"), + _("The number of dots per inch of the screen."), + 0, + G_MAXINT, + 160, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitViewportAttributs:width: + * + * The width of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_WIDTH, + g_param_spec_int( + "width", + _("Width"), + _("The width of the viewport."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:height: + * + * The height of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_HEIGHT, + g_param_spec_int( + "height", + _("Height"), + _("The height of the viewport."), + 0, + G_MAXINT, + 0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:initial-scale-factor: + * + * The initial scale of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_INITIAL_SCALE_FACTOR, + g_param_spec_float( + "initial-scale-factor", + _("Initial Scale Factor"), + _("The initial scale of the viewport."), + -1, + G_MAXFLOAT, + -1, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:minimum-scale-factor: + * + * The minimum scale of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_MINIMUM_SCALE_FACTOR, + g_param_spec_float( + "minimum-scale-factor", + _("Minimum Scale Factor"), + _("The minimum scale of the viewport."), + -1, + G_MAXFLOAT, + -1, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:maximum-scale-factor: + * + * The maximum scale of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_MAXIMUM_SCALE_FACTOR, + g_param_spec_float( + "maximum-scale-factor", + _("Maximum Scale Factor"), + _("The maximum scale of the viewport."), + -1, + G_MAXFLOAT, + -1, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:device-pixel-ratio: + * + * The device pixel ratio of the viewport. Before getting this property, + * you need to make sure that #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_DEVICE_PIXEL_RATIO, + g_param_spec_float( + "device-pixel-ratio", + _("Device Pixel Ratio"), + _("The device pixel ratio of the viewport."), + -1, + G_MAXFLOAT, + -1, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:user-scalable: + * + * Determines whether or not the user can zoom in and out. + * Before getting this property, you need to make sure that + * #WebKitViewportAttributes is valid. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_USER_SCALABLE, + g_param_spec_boolean( + _("user-scalable"), + _("User Scalable"), + _("Determines whether or not the user can zoom in and out."), + TRUE, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitViewportAttributs:valid: + * + * Determines whether or not the attributes are valid. + * #WebKitViewportAttributes are only valid on pages + * which have a viewport meta tag, and have already + * had the attributes calculated. + * + * Since: 1.3.8 + */ + g_object_class_install_property(gobjectClass, + PROP_VALID, + g_param_spec_boolean( + _("valid"), + _("Valid"), + _("Determines whether or not the attributes are valid, and can be used."), + FALSE, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(kclass, sizeof(WebKitViewportAttributesPrivate)); +} + +static void webkit_viewport_attributes_init(WebKitViewportAttributes* viewport) +{ + viewport->priv = G_TYPE_INSTANCE_GET_PRIVATE(viewport, WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesPrivate); + + viewport->priv->deviceWidth = 0; + viewport->priv->deviceHeight = 0; + viewport->priv->availableWidth = 0; + viewport->priv->availableHeight = 0; + viewport->priv->desktopWidth = 980; // This value works well for most web pages designed for desktop browsers. + viewport->priv->deviceDPI = 160; // It is the dpi of the original iPhone and Android devices. + viewport->priv->width = 0; + viewport->priv->height = 0; + viewport->priv->initialScaleFactor = -1; + viewport->priv->minimumScaleFactor = -1; + viewport->priv->maximumScaleFactor = -1; + viewport->priv->devicePixelRatio = -1; + viewport->priv->userScalable = TRUE; + viewport->priv->isValid = FALSE; +} + +static void webkit_viewport_attributes_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* paramSpec) +{ + WebKitViewportAttributes* viewportAttributes = WEBKIT_VIEWPORT_ATTRIBUTES(object); + WebKitViewportAttributesPrivate* priv = viewportAttributes->priv; + + switch (propertyID) { + case PROP_DEVICE_WIDTH: + g_value_set_int(value, priv->deviceWidth); + break; + case PROP_DEVICE_HEIGHT: + g_value_set_int(value, priv->deviceHeight); + break; + case PROP_AVAILABLE_WIDTH: + g_value_set_int(value, priv->availableWidth); + break; + case PROP_AVAILABLE_HEIGHT: + g_value_set_int(value, priv->availableHeight); + break; + case PROP_DESKTOP_WIDTH: + g_value_set_int(value, priv->desktopWidth); + break; + case PROP_DEVICE_DPI: + g_value_set_int(value, priv->deviceDPI); + break; + case PROP_WIDTH: + g_value_set_int(value, priv->width); + break; + case PROP_HEIGHT: + g_value_set_int(value, priv->height); + break; + case PROP_INITIAL_SCALE_FACTOR: + g_value_set_float(value, priv->initialScaleFactor); + break; + case PROP_MINIMUM_SCALE_FACTOR: + g_value_set_float(value, priv->minimumScaleFactor); + break; + case PROP_MAXIMUM_SCALE_FACTOR: + g_value_set_float(value, priv->maximumScaleFactor); + break; + case PROP_DEVICE_PIXEL_RATIO: + g_value_set_float(value, priv->devicePixelRatio); + break; + case PROP_USER_SCALABLE: + g_value_set_boolean(value, priv->userScalable); + break; + case PROP_VALID: + g_value_set_boolean(value, priv->isValid); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, paramSpec); + break; + } +} + +static void webkit_viewport_attributes_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* paramSpec) +{ + WebKitViewportAttributes* viewportAttributes = WEBKIT_VIEWPORT_ATTRIBUTES(object); + WebKitViewportAttributesPrivate* priv = viewportAttributes->priv; + + switch (propertyID) { + case PROP_DEVICE_WIDTH: + priv->deviceWidth = g_value_get_int(value); + break; + case PROP_DEVICE_HEIGHT: + priv->deviceHeight = g_value_get_int(value); + break; + case PROP_AVAILABLE_WIDTH: + priv->availableWidth = g_value_get_int(value); + break; + case PROP_AVAILABLE_HEIGHT: + priv->availableHeight = g_value_get_int(value); + break; + case PROP_DESKTOP_WIDTH: + priv->desktopWidth = g_value_get_int(value); + break; + case PROP_DEVICE_DPI: + priv->deviceDPI = g_value_get_int(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, paramSpec); + break; + } +} + +void webkitViewportAttributesRecompute(WebKitViewportAttributes* viewportAttributes) +{ + WebKitViewportAttributesPrivate* priv = viewportAttributes->priv; + WebKitWebView* webView = priv->webView; + + IntRect windowRect(webView->priv->corePage->chrome()->windowRect()); + priv->deviceWidth = windowRect.width(); + priv->deviceHeight = windowRect.height(); + + IntRect rect(webView->priv->corePage->chrome()->pageRect()); + priv->availableWidth = rect.width(); + priv->availableHeight = rect.height(); + + // First of all, we give the application an opportunity to override some of the values. + g_signal_emit_by_name(webView, "viewport-attributes-recompute-requested", viewportAttributes); + + ViewportArguments arguments = webView->priv->corePage->mainFrame()->document()->viewportArguments(); + + ViewportAttributes attributes = computeViewportAttributes(arguments, priv->desktopWidth, priv->deviceWidth, priv->deviceHeight, priv->deviceDPI, IntSize(priv->availableWidth, priv->availableHeight)); + + priv->width = attributes.layoutSize.width(); + priv->height = attributes.layoutSize.height(); + priv->initialScaleFactor = attributes.initialScale; + priv->minimumScaleFactor = attributes.minimumScale; + priv->maximumScaleFactor = attributes.maximumScale; + priv->devicePixelRatio = attributes.devicePixelRatio; + priv->userScalable = arguments.userScalable; + + if (!priv->isValid) { + priv->isValid = TRUE; + g_object_notify(G_OBJECT(viewportAttributes), "valid"); + } + + // Now let the application know it is safe to use the new values. + g_signal_emit_by_name(webView, "viewport-attributes-changed", viewportAttributes); +} + +/** + * webkit_viewport_attributes_recompute: + * @viewportAttributes: a #WebKitViewportAttributes + * + * Recompute the optimal viewport attributes and emit the viewport-attribute-changed signal. + * The viewport-attributes-recompute-requested signal also will be handled to override + * the device size, available size, desktop width, or device DPI. + * + * Since: 1.3.8 + */ +void webkit_viewport_attributes_recompute(WebKitViewportAttributes* viewportAttributes) +{ + if (!viewportAttributes->priv->isValid) + return; + webkitViewportAttributesRecompute(viewportAttributes); +} diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributes.h b/Source/WebKit/gtk/webkit/webkitviewportattributes.h new file mode 100644 index 0000000..7d90c1b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitviewportattributes.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2010 Joone Hur <joone@kldp.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitviewportattributes_h +#define webkitviewportattributes_h + +#include <glib-object.h> +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_VIEWPORT_ATTRIBUTES (webkit_viewport_attributes_get_type()) +#define WEBKIT_VIEWPORT_ATTRIBUTES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributes)) +#define WEBKIT_VIEWPORT_ATTRIBUTES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesClass)) +#define WEBKIT_IS_VIEWPORT_ATTRIBUTES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES)) +#define WEBKIT_IS_VIEWPORT_ATTRIBUTES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES)) +#define WEBKIT_VIEWPORT_ATTRIBUTES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesClass)) + +typedef struct _WebKitViewportAttributesPrivate WebKitViewportAttributesPrivate; + +struct _WebKitViewportAttributes { + GObject parent_instance; + + /*< private >*/ + WebKitViewportAttributesPrivate *priv; +}; + +struct _WebKitViewportAttributesClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_viewport_attributes_get_type (void); + +WEBKIT_API void +webkit_viewport_attributes_recompute(WebKitViewportAttributes* viewportAttributes); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h b/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h new file mode 100644 index 0000000..11cb668 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitviewportattributesprivate_h +#define webkitnavigationactionprivate_h + +#include <webkit/webkitviewportattributes.h> + +extern "C" { + +struct _WebKitViewportAttributesPrivate { + WebKitWebView* webView; + int deviceWidth; + int deviceHeight; + int availableWidth; + int availableHeight; + int desktopWidth; + int deviceDPI; + + int width; + int height; + float initialScaleFactor; + float minimumScaleFactor; + float maximumScaleFactor; + float devicePixelRatio; + gboolean userScalable; + gboolean isValid; +}; + + +void webkitViewportAttributesRecompute(WebKitViewportAttributes*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp new file mode 100644 index 0000000..62f7e8c --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp @@ -0,0 +1,472 @@ +/* + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebbackforwardlist.h" + +#include "BackForwardListImpl.h" +#include "HistoryItem.h" +#include "Page.h" +#include "webkitglobalsprivate.h" +#include "webkitwebbackforwardlistprivate.h" +#include "webkitwebhistoryitem.h" +#include "webkitwebhistoryitemprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <glib.h> + +/** + * SECTION:webkitwebbackforwardlist + * @short_description: The history of a #WebKitWebView + * @see_also: #WebKitWebView, #WebKitWebHistoryItem + * + * <informalexample><programlisting> + * /<!-- -->* Get the WebKitWebBackForwardList from the WebKitWebView *<!-- -->/ + * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view); + * WebKitWebHistoryItem *item = webkit_web_back_forward_list_get_current_item (back_forward_list); + * + * /<!-- -->* Do something with a WebKitWebHistoryItem *<!-- -->/ + * g_print("%p", item); + * + * /<!-- -->* Control some parameters *<!-- -->/ + * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view); + * webkit_web_back_forward_list_set_limit (back_forward_list, 30); + * </programlisting></informalexample> + * + */ + +using namespace WebKit; + +struct _WebKitWebBackForwardListPrivate { + WebCore::BackForwardListImpl* backForwardList; + gboolean disposed; +}; + +G_DEFINE_TYPE(WebKitWebBackForwardList, webkit_web_back_forward_list, G_TYPE_OBJECT); + +static void webkit_web_back_forward_list_dispose(GObject* object) +{ + WebKitWebBackForwardList* list = WEBKIT_WEB_BACK_FORWARD_LIST(object); + WebCore::BackForwardListImpl* backForwardList = core(list); + WebKitWebBackForwardListPrivate* priv = list->priv; + + if (!priv->disposed) { + priv->disposed = true; + + WebCore::HistoryItemVector items = backForwardList->entries(); + GHashTable* table = webkit_history_items(); + for (unsigned i = 0; i < items.size(); i++) + g_hash_table_remove(table, items[i].get()); + } + + G_OBJECT_CLASS(webkit_web_back_forward_list_parent_class)->dispose(object); +} + +static void webkit_web_back_forward_list_class_init(WebKitWebBackForwardListClass* klass) +{ + GObjectClass* object_class = G_OBJECT_CLASS(klass); + + object_class->dispose = webkit_web_back_forward_list_dispose; + + webkitInit(); + + g_type_class_add_private(klass, sizeof(WebKitWebBackForwardListPrivate)); +} + +static void webkit_web_back_forward_list_init(WebKitWebBackForwardList* webBackForwardList) +{ + webBackForwardList->priv = G_TYPE_INSTANCE_GET_PRIVATE(webBackForwardList, WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListPrivate); +} + +/** + * webkit_web_back_forward_list_new_with_web_view: (skip) + * @web_view: the back forward list's #WebKitWebView + * + * Creates an instance of the back forward list with a controlling #WebKitWebView + * + * Return value: a #WebKitWebBackForwardList + * + * Deprecated: 1.3.4: Instances of #WebKitWebBackForwardList are + * created and owned by #WebKitWebView instances only. + */ +WebKitWebBackForwardList* webkit_web_back_forward_list_new_with_web_view(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + + WebKitWebBackForwardList* webBackForwardList; + + webBackForwardList = WEBKIT_WEB_BACK_FORWARD_LIST(g_object_new(WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, NULL)); + WebKitWebBackForwardListPrivate* priv = webBackForwardList->priv; + + priv->backForwardList = static_cast<WebCore::BackForwardListImpl*>(core(webView)->backForwardList()); + priv->backForwardList->setEnabled(TRUE); + + return webBackForwardList; +} + +/** + * webkit_web_back_forward_list_go_forward: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Steps forward in the back forward list + */ +void webkit_web_back_forward_list_go_forward(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (backForwardList->enabled()) + backForwardList->goForward(); +} + +/** + * webkit_web_back_forward_list_go_back: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Steps backward in the back forward list + */ +void webkit_web_back_forward_list_go_back(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (backForwardList->enabled()) + backForwardList->goBack(); +} + +/** + * webkit_web_back_forward_list_contains_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to check + * + * Checks if @web_history_item is in the back forward list + * + * Return value: %TRUE if @web_history_item is in the back forward list, %FALSE if it doesn't + */ +gboolean webkit_web_back_forward_list_contains_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), FALSE); + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), FALSE); + + WebCore::HistoryItem* historyItem = core(webHistoryItem); + + g_return_val_if_fail(historyItem != NULL, FALSE); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + + return (backForwardList->enabled() ? backForwardList->containsItem(historyItem) : FALSE); +} + +/** + * webkit_web_back_forward_list_go_to_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to go to + * + * Go to the specified @web_history_item in the back forward list + */ +void webkit_web_back_forward_list_go_to_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem)); + + WebCore::HistoryItem* historyItem = core(webHistoryItem); + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + + if (backForwardList->enabled() && historyItem) + backForwardList->goToItem(historyItem); +} + +/** + * webkit_web_back_forward_list_get_forward_list_with_limit: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @limit: the number of items to retrieve + * + * Returns a list of items that succeed the current item, limited by @limit + * + * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items succeeding the current item, limited by @limit + */ +GList* webkit_web_back_forward_list_get_forward_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return NULL; + + WebCore::HistoryItemVector items; + GList* forwardItems = { 0 }; + + backForwardList->forwardListWithLimit(limit, items); + + for (unsigned i = 0; i < items.size(); i++) { + WebKitWebHistoryItem* webHistoryItem = kit(items[i]); + forwardItems = g_list_prepend(forwardItems, webHistoryItem); + } + + return forwardItems; +} + +/** + * webkit_web_back_forward_list_get_back_list_with_limit: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @limit: the number of items to retrieve + * + * Returns a list of items that precede the current item, limited by @limit + * + * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items preceding the current item, limited by @limit + */ +GList* webkit_web_back_forward_list_get_back_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return NULL; + + WebCore::HistoryItemVector items; + GList* backItems = { 0 }; + + backForwardList->backListWithLimit(limit, items); + + for (unsigned i = 0; i < items.size(); i++) { + WebKitWebHistoryItem* webHistoryItem = kit(items[i]); + backItems = g_list_prepend(backItems, webHistoryItem); + } + + return backItems; +} + +/** + * webkit_web_back_forward_list_get_back_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the item that precedes the current item + * + * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem preceding the current item + */ +WebKitWebHistoryItem* webkit_web_back_forward_list_get_back_item(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return NULL; + + WebCore::HistoryItem* historyItem = backForwardList->backItem(); + + return (historyItem ? kit(historyItem) : NULL); +} + +/** + * webkit_web_back_forward_list_get_current_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the current item. + * + * Returns a NULL value if the back forward list is empty + * + * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem + */ +WebKitWebHistoryItem* webkit_web_back_forward_list_get_current_item(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return NULL; + + WebCore::HistoryItem* historyItem = backForwardList->currentItem(); + + return (historyItem ? kit(historyItem) : NULL); +} + +/** + * webkit_web_back_forward_list_get_forward_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the item that succeeds the current item. + * + * Returns a NULL value if there nothing that succeeds the current item + * + * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem + */ +WebKitWebHistoryItem* webkit_web_back_forward_list_get_forward_item(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return NULL; + + WebCore::HistoryItem* historyItem = backForwardList->forwardItem(); + + return (historyItem ? kit(historyItem) : NULL); +} + +/** + * webkit_web_back_forward_list_get_nth_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @index: the index of the item + * + * Returns the item at a given index relative to the current item. + * + * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem located at the specified index relative to the current item + */ +WebKitWebHistoryItem* webkit_web_back_forward_list_get_nth_item(WebKitWebBackForwardList* webBackForwardList, gint index) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList) + return NULL; + + WebCore::HistoryItem* historyItem = backForwardList->itemAtIndex(index); + + return (historyItem ? kit(historyItem) : NULL); +} + +/** + * webkit_web_back_forward_list_get_back_length: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the number of items that preced the current item. + * + * Return value: a #gint corresponding to the number of items preceding the current item + */ +gint webkit_web_back_forward_list_get_back_length(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return 0; + + return backForwardList->backListCount(); +} + +/** + * webkit_web_back_forward_list_get_forward_length: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the number of items that succeed the current item. + * + * Return value: a #gint corresponding to the nuber of items succeeding the current item + */ +gint webkit_web_back_forward_list_get_forward_length(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return 0; + + return backForwardList->forwardListCount(); +} + +/** + * webkit_web_back_forward_list_get_limit: + * @web_back_forward_list: a #WebKitWebBackForwardList + * + * Returns the maximum limit of the back forward list. + * + * Return value: a #gint indicating the number of #WebKitWebHistoryItem the back forward list can hold + */ +gint webkit_web_back_forward_list_get_limit(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled()) + return 0; + + return backForwardList->capacity(); +} + +/** + * webkit_web_back_forward_list_set_limit: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @limit: the limit to set the back forward list to + * + * Sets the maximum limit of the back forward list. If the back forward list + * exceeds its capacity, items will be removed everytime a new item has been + * added. + */ +void webkit_web_back_forward_list_set_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (backForwardList) + backForwardList->setCapacity(limit); +} + +/** + * webkit_web_back_forward_list_add_item: + * @web_back_forward_list: a #WebKitWebBackForwardList + * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to add + * + * Adds the item to the #WebKitWebBackForwardList. + * + * The @webBackForwardList will add a reference to the @webHistoryItem, so you + * don't need to keep a reference once you've added it to the list. + * + * Since: 1.1.1 + */ +void webkit_web_back_forward_list_add_item(WebKitWebBackForwardList *webBackForwardList, WebKitWebHistoryItem *webHistoryItem) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + + g_object_ref(webHistoryItem); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + WebCore::HistoryItem* historyItem = core(webHistoryItem); + + backForwardList->addItem(historyItem); +} + +/** + * webkit_web_back_forward_list_clear: + * @web_back_forward_list: the #WebKitWebBackForwardList to be cleared + * + * Clears the @webBackForwardList by removing all its elements. Note that not even + * the current page is kept in list when cleared so you would have to add it later. + * + * Since: 1.3.1 + **/ +void webkit_web_back_forward_list_clear(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); + + WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); + if (!backForwardList || !backForwardList->enabled() || !backForwardList->entries().size()) + return; + + // Clear the current list by setting capacity to 0 + int capacity = backForwardList->capacity(); + backForwardList->setCapacity(0); + backForwardList->setCapacity(capacity); +} + +WebCore::BackForwardListImpl* WebKit::core(WebKitWebBackForwardList* webBackForwardList) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); + + return webBackForwardList->priv ? webBackForwardList->priv->backForwardList : 0; +} diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h new file mode 100644 index 0000000..15ddc94 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2008 Jan Michael C. Alonzo <jmalonzo@unpluggable.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebbackforwardlist_h +#define webkitwebbackforwardlist_h + +#include <glib.h> +#include <glib-object.h> + +#include <webkit/webkitdefines.h> +#include <webkit/webkitwebhistoryitem.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_BACK_FORWARD_LIST (webkit_web_back_forward_list_get_type()) +#define WEBKIT_WEB_BACK_FORWARD_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardList)) +#define WEBKIT_WEB_BACK_FORWARD_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListClass)) +#define WEBKIT_IS_WEB_BACK_FORWARD_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST)) +#define WEBKIT_IS_WEB_BACK_FORWARD_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST)) +#define WEBKIT_WEB_BACK_FORWARD_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListClass)) + +typedef struct _WebKitWebBackForwardListPrivate WebKitWebBackForwardListPrivate; + +struct _WebKitWebBackForwardList { + GObject parent_instance; + + /*< private >*/ + WebKitWebBackForwardListPrivate *priv; +}; + +struct _WebKitWebBackForwardListClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_back_forward_list_get_type (void); + +WEBKIT_API WebKitWebBackForwardList * +webkit_web_back_forward_list_new_with_web_view (WebKitWebView *web_view); + +WEBKIT_API void +webkit_web_back_forward_list_go_forward (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API void +webkit_web_back_forward_list_go_back (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API gboolean +webkit_web_back_forward_list_contains_item (WebKitWebBackForwardList *web_back_forward_list, + WebKitWebHistoryItem *history_item); + +WEBKIT_API void +webkit_web_back_forward_list_go_to_item (WebKitWebBackForwardList *web_back_forward_list, + WebKitWebHistoryItem *history_item); + +WEBKIT_API GList * +webkit_web_back_forward_list_get_forward_list_with_limit (WebKitWebBackForwardList *web_back_forward_list, + gint limit); + +WEBKIT_API GList * +webkit_web_back_forward_list_get_back_list_with_limit (WebKitWebBackForwardList *web_back_forward_list, + gint limit); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_back_forward_list_get_back_item (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_back_forward_list_get_current_item (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_back_forward_list_get_forward_item (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_back_forward_list_get_nth_item (WebKitWebBackForwardList *web_back_forward_list, + gint index); + +WEBKIT_API gint +webkit_web_back_forward_list_get_back_length (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API gint +webkit_web_back_forward_list_get_forward_length (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API gint +webkit_web_back_forward_list_get_limit (WebKitWebBackForwardList *web_back_forward_list); + +WEBKIT_API void +webkit_web_back_forward_list_set_limit (WebKitWebBackForwardList *web_back_forward_list, + gint limit); + +WEBKIT_API void +webkit_web_back_forward_list_add_item (WebKitWebBackForwardList *web_back_forward_list, + WebKitWebHistoryItem *history_item); + +WEBKIT_API void +webkit_web_back_forward_list_clear (WebKitWebBackForwardList *web_back_forward_list); + +G_END_DECLS + + +#endif /* webkitwebbackforwardlist_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h b/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h new file mode 100644 index 0000000..79424c0 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebbackforwardlistprivate_h +#define webkitwebbackforwardlistprivate_h + +#include "BackForwardListImpl.h" + +namespace WebKit { + +WebCore::BackForwardListImpl* core(WebKitWebBackForwardList*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp b/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp new file mode 100644 index 0000000..1291986 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp @@ -0,0 +1,530 @@ +/* + * Copyright (C) 2009 Martin Robinson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebdatabase.h" + +#include "DatabaseDetails.h" +#include "DatabaseTracker.h" +#include "webkitglobalsprivate.h" +#include "webkitsecurityoriginprivate.h" +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitwebdatabase + * @short_description: A WebKit web application database + * + * #WebKitWebDatabase is a representation of a Web Database database. The + * proposed Web Database standard introduces support for SQL databases that web + * sites can create and access on a local computer through JavaScript. + * + * To get access to all databases defined by a security origin, use + * #webkit_security_origin_get_databases. Each database has a canonical + * name, as well as a user-friendly display name. + * + * WebKit uses SQLite to create and access the local SQL databases. The location + * of a #WebKitWebDatabase can be accessed wth #webkit_web_database_get_filename. + * You can configure the location of all databases with + * #webkit_set_database_directory_path. + * + * For each database the web site can define an estimated size which can be + * accessed with #webkit_web_database_get_expected_size. The current size of the + * database in bytes is returned by #webkit_web_database_get_size. + * + * For more information refer to the Web Database specification proposal at + * http://dev.w3.org/html5/webdatabase + */ + +using namespace WebKit; + +enum { + PROP_0, + + PROP_SECURITY_ORIGIN, + PROP_NAME, + PROP_DISPLAY_NAME, + PROP_EXPECTED_SIZE, + PROP_SIZE, + PROP_PATH +}; + +G_DEFINE_TYPE(WebKitWebDatabase, webkit_web_database, G_TYPE_OBJECT) + +struct _WebKitWebDatabasePrivate { + WebKitSecurityOrigin* origin; + gchar* name; + gchar* displayName; + gchar* filename; +}; + +static gchar* webkit_database_directory_path = NULL; +static guint64 webkit_default_database_quota = 5 * 1024 * 1024; + +static void webkit_web_database_set_security_origin(WebKitWebDatabase* webDatabase, WebKitSecurityOrigin* security_origin); + +static void webkit_web_database_set_name(WebKitWebDatabase* webDatabase, const gchar* name); + +static void webkit_web_database_finalize(GObject* object) +{ + WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object); + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + g_free(priv->name); + g_free(priv->displayName); + g_free(priv->filename); + + G_OBJECT_CLASS(webkit_web_database_parent_class)->finalize(object); +} + +static void webkit_web_database_dispose(GObject* object) +{ + WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object); + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + if (priv->origin) { + g_object_unref(priv->origin); + priv->origin = NULL; + } + + G_OBJECT_CLASS(webkit_web_database_parent_class)->dispose(object); +} + +static void webkit_web_database_set_property(GObject* object, guint propId, const GValue* value, GParamSpec* pspec) +{ + WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object); + + switch (propId) { + case PROP_SECURITY_ORIGIN: + webkit_web_database_set_security_origin(webDatabase, WEBKIT_SECURITY_ORIGIN(g_value_get_object(value))); + break; + case PROP_NAME: + webkit_web_database_set_name(webDatabase, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); + break; + } +} + +static void webkit_web_database_get_property(GObject* object, guint propId, GValue* value, GParamSpec* pspec) +{ + WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object); + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + switch (propId) { + case PROP_SECURITY_ORIGIN: + g_value_set_object(value, priv->origin); + break; + case PROP_NAME: + g_value_set_string(value, webkit_web_database_get_name(webDatabase)); + break; + case PROP_DISPLAY_NAME: + g_value_set_string(value, webkit_web_database_get_display_name(webDatabase)); + break; + case PROP_EXPECTED_SIZE: + g_value_set_uint64(value, webkit_web_database_get_expected_size(webDatabase)); + break; + case PROP_SIZE: + g_value_set_uint64(value, webkit_web_database_get_size(webDatabase)); + break; + case PROP_PATH: + g_value_set_string(value, webkit_web_database_get_filename(webDatabase)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); + break; + } +} + +static void webkit_web_database_class_init(WebKitWebDatabaseClass* klass) +{ + GObjectClass* gobjectClass = G_OBJECT_CLASS(klass); + gobjectClass->dispose = webkit_web_database_dispose; + gobjectClass->finalize = webkit_web_database_finalize; + gobjectClass->set_property = webkit_web_database_set_property; + gobjectClass->get_property = webkit_web_database_get_property; + + /** + * WebKitWebDatabase:security-origin: + * + * The security origin of the database. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_SECURITY_ORIGIN, + g_param_spec_object("security-origin", + _("Security Origin"), + _("The security origin of the database"), + WEBKIT_TYPE_SECURITY_ORIGIN, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitWebDatabase:name: + * + * The name of the Web Database database. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_NAME, + g_param_spec_string("name", + _("Name"), + _("The name of the Web Database database"), + NULL, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitWebDatabase:display-name: + * + * The display name of the Web Database database. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_DISPLAY_NAME, + g_param_spec_string("display-name", + _("Display Name"), + _("The display name of the Web Storage database"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebDatabase:expected-size: + * + * The expected size of the database in bytes as defined by the web author. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_EXPECTED_SIZE, + g_param_spec_uint64("expected-size", + _("Expected Size"), + _("The expected size of the Web Database database"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READABLE)); + /** + * WebKitWebDatabase:size: + * + * The current size of the database in bytes. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_SIZE, + g_param_spec_uint64("size", + _("Size"), + _("The current size of the Web Database database"), + 0, G_MAXUINT64, 0, + WEBKIT_PARAM_READABLE)); + /** + * WebKitWebDatabase:filename: + * + * The absolute filename of the Web Database database. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobjectClass, PROP_PATH, + g_param_spec_string("filename", + _("Filename"), + _("The absolute filename of the Web Storage database"), + NULL, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(klass, sizeof(WebKitWebDatabasePrivate)); +} + +static void webkit_web_database_init(WebKitWebDatabase* webDatabase) +{ + webDatabase->priv = G_TYPE_INSTANCE_GET_PRIVATE(webDatabase, WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabasePrivate); +} + +// Internal use only +static void webkit_web_database_set_security_origin(WebKitWebDatabase *webDatabase, WebKitSecurityOrigin *securityOrigin) +{ + g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase)); + g_return_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin)); + + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + if (priv->origin) + g_object_unref(priv->origin); + + g_object_ref(securityOrigin); + priv->origin = securityOrigin; +} + +static void webkit_web_database_set_name(WebKitWebDatabase* webDatabase, const gchar* name) +{ + g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase)); + + WebKitWebDatabasePrivate* priv = webDatabase->priv; + g_free(priv->name); + priv->name = g_strdup(name); +} + +/** + * webkit_web_database_get_security_origin: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the security origin of the #WebKitWebDatabase. + * + * Returns: (transfer none): the security origin of the database + * + * Since: 1.1.14 + **/ +WebKitSecurityOrigin* webkit_web_database_get_security_origin(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + return priv->origin; +} + +/** + * webkit_web_database_get_name: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the canonical name of the #WebKitWebDatabase. + * + * Returns: the name of the database + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_web_database_get_name(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); + WebKitWebDatabasePrivate* priv = webDatabase->priv; + + return priv->name; +} + +/** + * webkit_web_database_get_display_name: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the name of the #WebKitWebDatabase as seen by the user. + * + * Returns: the name of the database as seen by the user. + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_web_database_get_display_name(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); + +#if ENABLE(DATABASE) + WebKitWebDatabasePrivate* priv = webDatabase->priv; + WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin)); + WTF::String displayName = details.displayName(); + + if (displayName.isEmpty()) + return ""; + + g_free(priv->displayName); + priv->displayName = g_strdup(displayName.utf8().data()); + return priv->displayName; +#else + return ""; +#endif +} + +/** + * webkit_web_database_get_expected_size: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the expected size of the #WebKitWebDatabase in bytes as defined by the + * web author. The Web Database standard allows web authors to specify an expected + * size of the database to optimize the user experience. + * + * Returns: the expected size of the database in bytes + * + * Since: 1.1.14 + **/ +guint64 webkit_web_database_get_expected_size(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), 0); + +#if ENABLE(DATABASE) + WebKitWebDatabasePrivate* priv = webDatabase->priv; + WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin)); + return details.expectedUsage(); +#else + return 0; +#endif +} + +/** + * webkit_web_database_get_size: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the actual size of the #WebKitWebDatabase space on disk in bytes. + * + * Returns: the actual size of the database in bytes + * + * Since: 1.1.14 + **/ +guint64 webkit_web_database_get_size(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), 0); + +#if ENABLE(DATABASE) + WebKitWebDatabasePrivate* priv = webDatabase->priv; + WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin)); + return details.currentUsage(); +#else + return 0; +#endif +} + +/** + * webkit_web_database_get_filename: + * @webDatabase: a #WebKitWebDatabase + * + * Returns the absolute filename to the #WebKitWebDatabase file on disk. + * + * Returns: the absolute filename of the database + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_web_database_get_filename(WebKitWebDatabase* webDatabase) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); + +#if ENABLE(DATABASE) + WebKitWebDatabasePrivate* priv = webDatabase->priv; + WTF::String coreName = WTF::String::fromUTF8(priv->name); + WTF::String corePath = WebCore::DatabaseTracker::tracker().fullPathForDatabase(core(priv->origin), coreName); + + if (corePath.isEmpty()) + return""; + + g_free(priv->filename); + priv->filename = g_strdup(corePath.utf8().data()); + return priv->filename; + +#else + return ""; +#endif +} + +/** + * webkit_web_database_remove: + * @webDatabase: a #WebKitWebDatabase + * + * Removes the #WebKitWebDatabase from its security origin and destroys all data + * stored in the database. + * + * Since: 1.1.14 + **/ +void webkit_web_database_remove(WebKitWebDatabase* webDatabase) +{ + g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase)); + +#if ENABLE(DATABASE) + WebKitWebDatabasePrivate* priv = webDatabase->priv; + WebCore::DatabaseTracker::tracker().deleteDatabase(core(priv->origin), priv->name); +#endif +} + +/** + * webkit_remove_all_web_databases: + * + * Removes all web databases from the current database directory path. + * + * Since: 1.1.14 + **/ +void webkit_remove_all_web_databases() +{ +#if ENABLE(DATABASE) + WebCore::DatabaseTracker::tracker().deleteAllDatabases(); +#endif +} + +/** + * webkit_get_web_database_directory_path: + * + * Returns the current path to the directory WebKit will write Web + * Database databases. By default this path will be in the user data + * directory. + * + * Returns: the current database directory path + * + * Since: 1.1.14 + **/ +G_CONST_RETURN gchar* webkit_get_web_database_directory_path() +{ +#if ENABLE(DATABASE) + WTF::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath(); + + if (path.isEmpty()) + return ""; + + g_free(webkit_database_directory_path); + webkit_database_directory_path = g_strdup(path.utf8().data()); + return webkit_database_directory_path; +#else + return ""; +#endif +} + +/** + * webkit_set_web_database_directory_path: + * @path: the new database directory path + * + * Sets the current path to the directory WebKit will write Web + * Database databases. + * + * Since: 1.1.14 + **/ +void webkit_set_web_database_directory_path(const gchar* path) +{ +#if ENABLE(DATABASE) + WTF::String corePath = WTF::String::fromUTF8(path); + WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath); + + g_free(webkit_database_directory_path); + webkit_database_directory_path = g_strdup(corePath.utf8().data()); +#endif +} + +/** + * webkit_get_default_web_database_quota: + * + * Returns the default quota for Web Database databases. By default + * this value is 5MB. + + * Returns: the current default database quota in bytes + * + * Since: 1.1.14 + **/ +guint64 webkit_get_default_web_database_quota() +{ + return webkit_default_database_quota; +} + +/** + * webkit_set_default_web_database_quota: + * @defaultQuota: the new default database quota + * + * Sets the current path to the directory WebKit will write Web + * Database databases. + * + * Since: 1.1.14 + **/ +void webkit_set_default_web_database_quota(guint64 defaultQuota) +{ + webkit_default_database_quota = defaultQuota; +} diff --git a/Source/WebKit/gtk/webkit/webkitwebdatabase.h b/Source/WebKit/gtk/webkit/webkitwebdatabase.h new file mode 100644 index 0000000..8a9a151 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebdatabase.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2009 Martin Robinson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebdatabase_h +#define webkitwebdatabase_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_DATABASE (webkit_web_database_get_type()) +#define WEBKIT_WEB_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabase)) +#define WEBKIT_WEB_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabaseClass)) +#define WEBKIT_IS_WEB_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_DATABASE)) +#define WEBKIT_IS_WEB_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_DATABASE)) +#define WEBKIT_WEB_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabaseClass)) + +typedef struct _WebKitWebDatabasePrivate WebKitWebDatabasePrivate; + +struct _WebKitWebDatabase { + GObject parent_instance; + + /*< private >*/ + WebKitWebDatabasePrivate* priv; +}; + +struct _WebKitWebDatabaseClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); +}; + +WEBKIT_API GType +webkit_web_database_get_type (void); + +WEBKIT_API WebKitSecurityOrigin * +webkit_web_database_get_security_origin (WebKitWebDatabase* webDatabase); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_web_database_get_name (WebKitWebDatabase* webDatabase); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_web_database_get_display_name (WebKitWebDatabase* webDatabase); + +WEBKIT_API guint64 +webkit_web_database_get_expected_size (WebKitWebDatabase* webDatabase); + +WEBKIT_API guint64 +webkit_web_database_get_size (WebKitWebDatabase* webDatabase); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_web_database_get_filename (WebKitWebDatabase* webDatabase); + +WEBKIT_API void +webkit_web_database_remove (WebKitWebDatabase* webDatabase); + +WEBKIT_API void +webkit_remove_all_web_databases (void); + +WEBKIT_API G_CONST_RETURN gchar* +webkit_get_web_database_directory_path (void); + +WEBKIT_API void +webkit_set_web_database_directory_path (const gchar* path); + +WEBKIT_API guint64 +webkit_get_default_web_database_quota (void); + +WEBKIT_API void +webkit_set_default_web_database_quota (guint64 defaultQuota); + +G_END_DECLS + +#endif /* webkitwebdatabase_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp b/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp new file mode 100644 index 0000000..8538665 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp @@ -0,0 +1,442 @@ +/* + * Copyright (C) 2009 Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebdatasource.h" + +#include "ArchiveResource.h" +#include "DocumentLoaderGtk.h" +#include "FrameLoader.h" +#include "FrameLoaderClientGtk.h" +#include "KURL.h" +#include "PlatformString.h" +#include "ResourceRequest.h" +#include "SharedBuffer.h" +#include "SubstituteData.h" +#include "runtime/InitializeThreading.h" +#include "webkitglobalsprivate.h" +#include "webkitnetworkrequestprivate.h" +#include "webkitwebdatasourceprivate.h" +#include "webkitwebframeprivate.h" +#include "webkitwebresource.h" +#include "webkitwebviewprivate.h" +#include "wtf/Assertions.h" +#include <glib.h> + +/** + * SECTION:webkitwebdatasource + * @short_description: Encapsulates the content to be displayed in a #WebKitWebFrame. + * @see_also: #WebKitWebFrame + * + * Data source encapsulates the content of a #WebKitWebFrame. A + * #WebKitWebFrame has a main resource and subresources and the data source + * provides access to these resources. When a request gets loaded initially, + * it is set to a provisional state. The application can request for the + * request that initiated the load by asking for the provisional data source + * and invoking the webkit_web_data_source_get_initial_request method of + * #WebKitWebDataSource. This data source may not have enough data and some + * methods may return empty values. To get a "full" data source with the data + * and resources loaded, you need to get the non-provisional data source + * through #WebKitWebFrame's webkit_web_frame_get_data_source method. This + * data source will have the data after everything was loaded. Make sure that + * the data source was finished loading before using any of its methods. You + * can do this via webkit_web_data_source_is_loading. + */ + +using namespace WebCore; +using namespace WebKit; + +struct _WebKitWebDataSourcePrivate { + WebKit::DocumentLoader* loader; + + WebKitNetworkRequest* initialRequest; + WebKitNetworkRequest* networkRequest; + WebKitWebResource* mainresource; + + GString* data; + + gchar* textEncoding; + gchar* unreachableURL; +}; + +G_DEFINE_TYPE(WebKitWebDataSource, webkit_web_data_source, G_TYPE_OBJECT); + +static void webkit_web_data_source_dispose(GObject* object) +{ + WebKitWebDataSource* webDataSource = WEBKIT_WEB_DATA_SOURCE(object); + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + + ASSERT(priv->loader); + ASSERT(!priv->loader->isLoading()); + priv->loader->detachDataSource(); + priv->loader->deref(); + + if (priv->initialRequest) { + g_object_unref(priv->initialRequest); + priv->initialRequest = NULL; + } + + if (priv->networkRequest) { + g_object_unref(priv->networkRequest); + priv->networkRequest = NULL; + } + + if (priv->mainresource) { + g_object_unref(priv->mainresource); + priv->mainresource = NULL; + } + + G_OBJECT_CLASS(webkit_web_data_source_parent_class)->dispose(object); +} + +static void webkit_web_data_source_finalize(GObject* object) +{ + WebKitWebDataSource* dataSource = WEBKIT_WEB_DATA_SOURCE(object); + WebKitWebDataSourcePrivate* priv = dataSource->priv; + + g_free(priv->unreachableURL); + g_free(priv->textEncoding); + + if (priv->data) { + g_string_free(priv->data, TRUE); + priv->data = NULL; + } + + G_OBJECT_CLASS(webkit_web_data_source_parent_class)->finalize(object); +} + +static void webkit_web_data_source_class_init(WebKitWebDataSourceClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + gobject_class->dispose = webkit_web_data_source_dispose; + gobject_class->finalize = webkit_web_data_source_finalize; + + webkitInit(); + + g_type_class_add_private(gobject_class, sizeof(WebKitWebDataSourcePrivate)); +} + +static void webkit_web_data_source_init(WebKitWebDataSource* webDataSource) +{ + webDataSource->priv = G_TYPE_INSTANCE_GET_PRIVATE(webDataSource, WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourcePrivate); +} + +/** + * webkit_web_data_source_new: + * + * Creates a new #WebKitWebDataSource instance. The URL of the + * #WebKitWebDataSource will be set to "about:blank". + * + * Return: a new #WebKitWebDataSource. + * + * Since: 1.1.14 + */ +WebKitWebDataSource* webkit_web_data_source_new() +{ + WebKitNetworkRequest* request = webkit_network_request_new("about:blank"); + WebKitWebDataSource* datasource = webkit_web_data_source_new_with_request(request); + g_object_unref(request); + + return datasource; +} + +/** + * webkit_web_data_source_new_with_request: + * @request: the #WebKitNetworkRequest to use to create this data source + * + * Creates a new #WebKitWebDataSource from a #WebKitNetworkRequest. Normally, + * #WebKitWebFrame objects create their data sources so you will almost never + * want to invoke this method directly. + * + * Returns: a new #WebKitWebDataSource + * + * Since: 1.1.14 + */ +WebKitWebDataSource* webkit_web_data_source_new_with_request(WebKitNetworkRequest* request) +{ + ASSERT(request); + + const gchar* uri = webkit_network_request_get_uri(request); + + ResourceRequest resourceRequest(ResourceRequest(KURL(KURL(), String::fromUTF8(uri)))); + WebKitWebDataSource* datasource = kitNew(WebKit::DocumentLoader::create(resourceRequest, SubstituteData())); + + WebKitWebDataSourcePrivate* priv = datasource->priv; + priv->initialRequest = request; + + return datasource; +} + +/** + * webkit_web_data_source_get_web_frame: + * @data_source: a #WebKitWebDataSource + * + * Returns the #WebKitWebFrame that represents this data source + * + * Return value: (transfer none): the #WebKitWebFrame that represents + * the @data_source. The #WebKitWebFrame is owned by WebKit and should + * not be freed or destroyed. This will return %NULL if the + * @data_source is not attached to a frame. + * + * Since: 1.1.14 + */ +WebKitWebFrame* webkit_web_data_source_get_web_frame(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + FrameLoader* frameLoader = priv->loader->frameLoader(); + + if (!frameLoader) + return NULL; + + return static_cast<WebKit::FrameLoaderClient*>(frameLoader->client())->webFrame(); +} + +/** + * webkit_web_data_source_get_initial_request: + * @data_source: a #WebKitWebDataSource + * + * Returns a reference to the original request that was used to load the web + * content. The #WebKitNetworkRequest returned by this method is the request + * prior to the "committed" load state. See webkit_web_data_source_get_request + * for getting the "committed" request. + * + * Return value: (transfer none): the original #WebKitNetworkRequest + * + * Since: 1.1.14 + */ +WebKitNetworkRequest* webkit_web_data_source_get_initial_request(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + ResourceRequest request = priv->loader->originalRequest(); + + if (priv->initialRequest) + g_object_unref(priv->initialRequest); + + priv->initialRequest = kitNew(request); + return priv->initialRequest; +} + +/** + * webkit_web_data_source_get_request: + * @data_source: a #WebKitWebDataSource + * + * Returns a #WebKitNetworkRequest that was used to create this + * #WebKitWebDataSource. The #WebKitNetworkRequest returned by this method is + * the request that was "committed", and hence, different from the request you + * get from the webkit_web_data_source_get_initial_request method. + * + * Return value: (transfer none): the #WebKitNetworkRequest that + * created the @data_source or %NULL if the @data_source is not + * attached to the frame or the frame hasn't been loaded. + * + * Since: 1.1.14 + */ +WebKitNetworkRequest* webkit_web_data_source_get_request(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + FrameLoader* frameLoader = priv->loader->frameLoader(); + if (!frameLoader || !frameLoader->frameHasLoaded()) + return NULL; + + ResourceRequest request = priv->loader->request(); + + if (priv->networkRequest) + g_object_unref(priv->networkRequest); + + priv->networkRequest = kitNew(request); + return priv->networkRequest; +} + +/** + * webkit_web_data_source_get_encoding: + * @data_source: a #WebKitWebDataSource + * + * Returns the text encoding name as set in the #WebKitWebView, or if not, the + * text encoding of the response. + * + * Return value: the encoding name of the #WebKitWebView or of the response. + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_data_source_get_encoding(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + String textEncodingName = priv->loader->overrideEncoding(); + + if (!textEncodingName) + textEncodingName = priv->loader->response().textEncodingName(); + + CString encoding = textEncodingName.utf8(); + g_free(priv->textEncoding); + priv->textEncoding = g_strdup(encoding.data()); + return priv->textEncoding; +} + +/** + * webkit_web_data_source_is_loading: + * @data_source: a #WebKitWebDataSource + * + * Determines whether the data source is in the process of loading its content. + * + * Return value: %TRUE if the @data_source is still loading, %FALSE otherwise + * + * Since: 1.1.14 + */ +gboolean webkit_web_data_source_is_loading(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), FALSE); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + + return priv->loader->isLoadingInAPISense(); +} + +/** + * webkit_web_data_source_get_data: + * @data_source: a #WebKitWebDataSource + * + * Returns the raw data that represents the the frame's content.The data will + * be incomplete until the data has finished loading. Returns %NULL if the web + * frame hasn't loaded any data. Use webkit_web_data_source_is_loading to test + * if data source is in the process of loading. + * + * Return value: (transfer none): a #GString which contains the raw + * data that represents the @data_source or %NULL if the @data_source + * hasn't loaded any data. + * + * Since: 1.1.14 + */ +GString* webkit_web_data_source_get_data(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + + RefPtr<SharedBuffer> mainResourceData = priv->loader->mainResourceData(); + + if (!mainResourceData) + return NULL; + + if (priv->data) { + g_string_free(priv->data, TRUE); + priv->data = NULL; + } + + priv->data = g_string_new_len(mainResourceData->data(), mainResourceData->size()); + return priv->data; +} + +/** + * webkit_web_data_source_get_main_resource: + * @data_source: a #WebKitWebDataSource + * + * Returns the main resource of the @data_source + * + * Return value: (transfer none): a new #WebKitWebResource + * representing the main resource of the @data_source. + * + * Since: 1.1.14 + */ +WebKitWebResource* webkit_web_data_source_get_main_resource(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + + if (priv->mainresource) + return priv->mainresource; + + WebKitWebFrame* webFrame = webkit_web_data_source_get_web_frame(webDataSource); + WebKitWebView* webView = getViewFromFrame(webFrame); + + priv->mainresource = WEBKIT_WEB_RESOURCE(g_object_ref(webkit_web_view_get_main_resource(webView))); + + return priv->mainresource; +} + +/** + * webkit_web_data_source_get_unreachable_uri: + * @data_source: a #WebKitWebDataSource + * + * Return the unreachable URI of @data_source. The @data_source will have an + * unreachable URL if it was created using #WebKitWebFrame's + * webkit_web_frame_load_alternate_html_string method. + * + * Return value: the unreachable URL of @data_source or %NULL if there is no unreachable URL. + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_data_source_get_unreachable_uri(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + const KURL& unreachableURL = priv->loader->unreachableURL(); + + if (unreachableURL.isEmpty()) + return NULL; + + g_free(priv->unreachableURL); + priv->unreachableURL = g_strdup(unreachableURL.string().utf8().data()); + return priv->unreachableURL; +} + +/** + * webkit_web_data_source_get_subresources: + * @data_source: a #WebKitWebDataSource + * + * Gives you a #GList of #WebKitWebResource objects that compose the + * #WebKitWebView to which this #WebKitWebDataSource is attached. + * + * Return value: (element-type WebKitWebResource) (transfer container): + * a #GList of #WebKitWebResource objects; the objects are owned by + * WebKit, but the GList must be freed. + * + * Since: 1.1.15 + */ +GList* webkit_web_data_source_get_subresources(WebKitWebDataSource* webDataSource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL); + + WebKitWebFrame* webFrame = webkit_web_data_source_get_web_frame(webDataSource); + WebKitWebView* webView = getViewFromFrame(webFrame); + + return webkit_web_view_get_subresources(webView); +} + +namespace WebKit { + +WebKitWebDataSource* kitNew(PassRefPtr<WebKit::DocumentLoader> loader) +{ + WebKitWebDataSource* webDataSource = WEBKIT_WEB_DATA_SOURCE(g_object_new(WEBKIT_TYPE_WEB_DATA_SOURCE, NULL)); + WebKitWebDataSourcePrivate* priv = webDataSource->priv; + priv->loader = loader.releaseRef(); + + return webDataSource; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasource.h b/Source/WebKit/gtk/webkit/webkitwebdatasource.h new file mode 100644 index 0000000..df83118 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebdatasource.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2009 Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebdatasource_h +#define webkitwebdatasource_h + +#include <glib.h> +#include <glib-object.h> + +#include <webkit/webkitdefines.h> +#include <webkit/webkitwebframe.h> +#include <webkit/webkitnetworkrequest.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_DATA_SOURCE (webkit_web_data_source_get_type()) +#define WEBKIT_WEB_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSource)) +#define WEBKIT_WEB_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourceClass)) +#define WEBKIT_IS_WEB_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_DATA_SOURCE)) +#define WEBKIT_IS_WEB_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_DATA_SOURCE)) +#define WEBKIT_WEB_DATA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourceClass)) + +typedef struct _WebKitWebDataSourcePrivate WebKitWebDataSourcePrivate; + +struct _WebKitWebDataSource { + GObject parent_instance; + + /*< private >*/ + WebKitWebDataSourcePrivate *priv; +}; + +struct _WebKitWebDataSourceClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_data_source_get_type (void); + +WEBKIT_API WebKitWebDataSource * +webkit_web_data_source_new (void); + +WEBKIT_API WebKitWebDataSource * +webkit_web_data_source_new_with_request (WebKitNetworkRequest *request); + +WEBKIT_API WebKitWebFrame * +webkit_web_data_source_get_web_frame (WebKitWebDataSource *data_source); + +WEBKIT_API WebKitNetworkRequest * +webkit_web_data_source_get_initial_request (WebKitWebDataSource *data_source); + +WEBKIT_API WebKitNetworkRequest * +webkit_web_data_source_get_request (WebKitWebDataSource *data_source); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_data_source_get_encoding (WebKitWebDataSource *data_source); + +WEBKIT_API gboolean +webkit_web_data_source_is_loading (WebKitWebDataSource *data_source); + +WEBKIT_API GString * +webkit_web_data_source_get_data (WebKitWebDataSource *data_source); + +WEBKIT_API WebKitWebResource * +webkit_web_data_source_get_main_resource (WebKitWebDataSource *data_source); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_data_source_get_unreachable_uri (WebKitWebDataSource *data_source); + +WEBKIT_API GList* +webkit_web_data_source_get_subresources (WebKitWebDataSource *data_source); + +G_END_DECLS + +#endif /* webkitwebdatasource_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h b/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h new file mode 100644 index 0000000..5c18493 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebdatasourceprivate_h +#define webkitwebdatasourceprivate_h + +#include "RefPtr.h" +#include "webkitwebdatasource.h" + +namespace WebKit { + +WebKitWebDataSource* kitNew(PassRefPtr<WebKit::DocumentLoader>); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebframe.cpp b/Source/WebKit/gtk/webkit/webkitwebframe.cpp new file mode 100644 index 0000000..d0ea875 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebframe.cpp @@ -0,0 +1,1002 @@ +/* + * Copyright (C) 2007, 2008 Holger Hans Peter Freyther + * Copyright (C) 2007 Alp Toker <alp@atoker.com> + * Copyright (C) 2007 Apple Inc. + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2009 Jan Alonzo <jmalonzo@gmail.com> + * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebframe.h" + +#include "AXObjectCache.h" +#include "AccessibilityObjectWrapperAtk.h" +#include "AnimationController.h" +#include "DOMObjectCache.h" +#include "DocumentLoader.h" +#include "DocumentLoaderGtk.h" +#include "FrameLoader.h" +#include "FrameLoaderClientGtk.h" +#include "FrameTree.h" +#include "FrameView.h" +#include "GCController.h" +#include "GraphicsContext.h" +#include "GtkVersioning.h" +#include "HTMLFrameOwnerElement.h" +#include "JSDOMBinding.h" +#include "JSDOMWindow.h" +#include "JSElement.h" +#include "PrintContext.h" +#include "RenderListItem.h" +#include "RenderTreeAsText.h" +#include "RenderView.h" +#include "ScriptController.h" +#include "SubstituteData.h" +#include "webkitenumtypes.h" +#include "webkitglobalsprivate.h" +#include "webkitmarshal.h" +#include "webkitnetworkrequestprivate.h" +#include "webkitnetworkresponseprivate.h" +#include "webkitsecurityoriginprivate.h" +#include "webkitwebframeprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <JavaScriptCore/APICast.h> +#include <atk/atk.h> +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +#if ENABLE(SVG) +#include "SVGSMILElement.h" +#endif + +/** + * SECTION:webkitwebframe + * @short_description: The content of a #WebKitWebView + * + * A #WebKitWebView contains a main #WebKitWebFrame. A #WebKitWebFrame + * contains the content of one URI. The URI and name of the frame can + * be retrieved, the load status and progress can be observed using the + * signals and can be controlled using the methods of the #WebKitWebFrame. + * A #WebKitWebFrame can have any number of children and one child can + * be found by using #webkit_web_frame_find_frame. + * + * <informalexample><programlisting> + * /<!-- -->* Get the frame from the #WebKitWebView *<!-- -->/ + * WebKitWebFrame *frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW(my_view)); + * g_print("The URI of this frame is '%s'", webkit_web_frame_get_uri (frame)); + * </programlisting></informalexample> + */ + +using namespace WebKit; +using namespace WebCore; +using namespace std; + +enum { + CLEARED, + LOAD_COMMITTED, + LOAD_DONE, + TITLE_CHANGED, + HOVERING_OVER_LINK, + SCROLLBARS_POLICY_CHANGED, + LAST_SIGNAL +}; + +enum { + PROP_0, + + PROP_NAME, + PROP_TITLE, + PROP_URI, + PROP_LOAD_STATUS, + PROP_HORIZONTAL_SCROLLBAR_POLICY, + PROP_VERTICAL_SCROLLBAR_POLICY +}; + +static guint webkit_web_frame_signals[LAST_SIGNAL] = { 0, }; + +G_DEFINE_TYPE(WebKitWebFrame, webkit_web_frame, G_TYPE_OBJECT) + +static void webkit_web_frame_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* paramSpec) +{ + WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object); + + switch (propertyId) { + case PROP_NAME: + g_value_set_string(value, webkit_web_frame_get_name(frame)); + break; + case PROP_TITLE: + g_value_set_string(value, webkit_web_frame_get_title(frame)); + break; + case PROP_URI: + g_value_set_string(value, webkit_web_frame_get_uri(frame)); + break; + case PROP_LOAD_STATUS: + g_value_set_enum(value, webkit_web_frame_get_load_status(frame)); + break; + case PROP_HORIZONTAL_SCROLLBAR_POLICY: + g_value_set_enum(value, webkit_web_frame_get_horizontal_scrollbar_policy(frame)); + break; + case PROP_VERTICAL_SCROLLBAR_POLICY: + g_value_set_enum(value, webkit_web_frame_get_vertical_scrollbar_policy(frame)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, paramSpec); + break; + } +} + +// Called from the FrameLoaderClient when it is destroyed. Normally +// the unref in the FrameLoaderClient is destroying this object as +// well but due reference counting a user might have added a reference... +void webkit_web_frame_core_frame_gone(WebKitWebFrame* frame) +{ + ASSERT(WEBKIT_IS_WEB_FRAME(frame)); + WebKitWebFramePrivate* priv = frame->priv; + if (priv->coreFrame) + DOMObjectCache::clearByFrame(priv->coreFrame); + priv->coreFrame = 0; +} + +static WebKitWebDataSource* webkit_web_frame_get_data_source_from_core_loader(WebCore::DocumentLoader* loader) +{ + return loader ? static_cast<WebKit::DocumentLoader*>(loader)->dataSource() : 0; +} + +static void webkit_web_frame_finalize(GObject* object) +{ + WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object); + WebKitWebFramePrivate* priv = frame->priv; + + if (priv->coreFrame) { + DOMObjectCache::clearByFrame(priv->coreFrame); + priv->coreFrame->loader()->cancelAndClear(); + priv->coreFrame = 0; + } + + g_free(priv->name); + g_free(priv->title); + g_free(priv->uri); + + G_OBJECT_CLASS(webkit_web_frame_parent_class)->finalize(object); +} + +static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass) +{ + webkitInit(); + + /* + * signals + */ + webkit_web_frame_signals[CLEARED] = g_signal_new("cleared", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + 0, + 0, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebFrame::load-done + * @web_frame: the object on which the signal is emitted + * + * Emitted when frame loading is done. + * + * Deprecated: Use the "load-status" property instead. + */ + webkit_web_frame_signals[LOAD_COMMITTED] = g_signal_new("load-committed", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + 0, + 0, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebFrame::load-done + * @web_frame: the object on which the signal is emitted + * + * Emitted when frame loading is done. + * + * Deprecated: Use the "load-status" property instead, and/or + * WebKitWebView::load-error to be notified of load errors + */ + webkit_web_frame_signals[LOAD_DONE] = g_signal_new("load-done", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + 0, + 0, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, + G_TYPE_BOOLEAN); + + /** + * WebKitWebFrame::title-changed: + * @frame: the object on which the signal is emitted + * @title: the new title + * + * When a #WebKitWebFrame changes the document title this signal is emitted. + * + * Deprecated: 1.1.18: Use "notify::title" instead. + */ + webkit_web_frame_signals[TITLE_CHANGED] = g_signal_new("title-changed", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + 0, + 0, + webkit_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + webkit_web_frame_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + 0, + 0, + webkit_marshal_VOID__STRING_STRING, + G_TYPE_NONE, 2, + G_TYPE_STRING, G_TYPE_STRING); + + /** + * WebKitWebFrame::scrollbars-policy-changed: + * @web_view: the object which received the signal + * + * Signal emitted when policy for one or both of the scrollbars of + * the view has changed. The default handler will apply the new + * policy to the container that holds the #WebKitWebFrame if it is + * a #GtkScrolledWindow and the frame is the main frame. If you do + * not want this to be handled automatically, you need to handle + * this signal. + * + * The exception to this rule is that policies to disable the + * scrollbars are applied as %GTK_POLICY_AUTOMATIC instead, since + * the size request of the widget would force browser windows to + * not be resizable. + * + * You can obtain the new policies from the + * WebKitWebFrame:horizontal-scrollbar-policy and + * WebKitWebFrame:vertical-scrollbar-policy properties. + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + * + * Since: 1.1.14 + */ + webkit_web_frame_signals[SCROLLBARS_POLICY_CHANGED] = g_signal_new("scrollbars-policy-changed", + G_TYPE_FROM_CLASS(frameClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + g_signal_accumulator_true_handled, + 0, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN, 0); + + /* + * implementations of virtual methods + */ + GObjectClass* objectClass = G_OBJECT_CLASS(frameClass); + objectClass->finalize = webkit_web_frame_finalize; + objectClass->get_property = webkit_web_frame_get_property; + + /* + * properties + */ + g_object_class_install_property(objectClass, PROP_NAME, + g_param_spec_string("name", + _("Name"), + _("The name of the frame"), + 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property(objectClass, PROP_TITLE, + g_param_spec_string("title", + _("Title"), + _("The document title of the frame"), + 0, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property(objectClass, PROP_URI, + g_param_spec_string("uri", + _("URI"), + _("The current URI of the contents displayed by the frame"), + 0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebFrame:load-status: + * + * Determines the current status of the load. + * + * Since: 1.1.7 + */ + g_object_class_install_property(objectClass, PROP_LOAD_STATUS, + g_param_spec_enum("load-status", + "Load Status", + "Determines the current status of the load", + WEBKIT_TYPE_LOAD_STATUS, + WEBKIT_LOAD_FINISHED, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebFrame:horizontal-scrollbar-policy: + * + * Determines the current policy for the horizontal scrollbar of + * the frame. For the main frame, make sure to set the same policy + * on the scrollable widget containing the #WebKitWebView, unless + * you know what you are doing. + * + * Since: 1.1.14 + */ + g_object_class_install_property(objectClass, PROP_HORIZONTAL_SCROLLBAR_POLICY, + g_param_spec_enum("horizontal-scrollbar-policy", + _("Horizontal Scrollbar Policy"), + _("Determines the current policy for the horizontal scrollbar of the frame."), + GTK_TYPE_POLICY_TYPE, + GTK_POLICY_AUTOMATIC, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebFrame:vertical-scrollbar-policy: + * + * Determines the current policy for the vertical scrollbar of + * the frame. For the main frame, make sure to set the same policy + * on the scrollable widget containing the #WebKitWebView, unless + * you know what you are doing. + * + * Since: 1.1.14 + */ + g_object_class_install_property(objectClass, PROP_VERTICAL_SCROLLBAR_POLICY, + g_param_spec_enum("vertical-scrollbar-policy", + _("Vertical Scrollbar Policy"), + _("Determines the current policy for the vertical scrollbar of the frame."), + GTK_TYPE_POLICY_TYPE, + GTK_POLICY_AUTOMATIC, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(frameClass, sizeof(WebKitWebFramePrivate)); +} + +static void webkit_web_frame_init(WebKitWebFrame* frame) +{ + WebKitWebFramePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(frame, WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate); + + // TODO: Move constructor code here. + frame->priv = priv; +} + + +/** + * webkit_web_frame_new: + * @web_view: the controlling #WebKitWebView + * + * Creates a new #WebKitWebFrame initialized with a controlling #WebKitWebView. + * + * Returns: a new #WebKitWebFrame + * + * Deprecated: 1.0.2: #WebKitWebFrame can only be used to inspect existing + * frames. + **/ +WebKitWebFrame* webkit_web_frame_new(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + + WebKitWebFrame* frame = WEBKIT_WEB_FRAME(g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL)); + WebKitWebFramePrivate* priv = frame->priv; + WebKitWebViewPrivate* viewPriv = webView->priv; + + priv->webView = webView; + WebKit::FrameLoaderClient* client = new WebKit::FrameLoaderClient(frame); + priv->coreFrame = Frame::create(viewPriv->corePage, 0, client).get(); + priv->coreFrame->init(); + + priv->origin = 0; + + return frame; +} + +/** + * webkit_web_frame_get_title: + * @frame: a #WebKitWebFrame + * + * Returns the @frame's document title + * + * Return value: the title of @frame + */ +G_CONST_RETURN gchar* webkit_web_frame_get_title(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + WebKitWebFramePrivate* priv = frame->priv; + return priv->title; +} + +/** + * webkit_web_frame_get_uri: + * @frame: a #WebKitWebFrame + * + * Returns the current URI of the contents displayed by the @frame + * + * Return value: the URI of @frame + */ +G_CONST_RETURN gchar* webkit_web_frame_get_uri(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + WebKitWebFramePrivate* priv = frame->priv; + return priv->uri; +} + +/** + * webkit_web_frame_get_web_view: + * @frame: a #WebKitWebFrame + * + * Returns the #WebKitWebView that manages this #WebKitWebFrame. + * + * The #WebKitWebView returned manages the entire hierarchy of #WebKitWebFrame + * objects that contains @frame. + * + * Return value: (transfer none): the #WebKitWebView that manages @frame + */ +WebKitWebView* webkit_web_frame_get_web_view(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + WebKitWebFramePrivate* priv = frame->priv; + return priv->webView; +} + +/** + * webkit_web_frame_get_name: + * @frame: a #WebKitWebFrame + * + * Returns the @frame's name + * + * Return value: the name of @frame + */ +G_CONST_RETURN gchar* webkit_web_frame_get_name(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + WebKitWebFramePrivate* priv = frame->priv; + + if (priv->name) + return priv->name; + + Frame* coreFrame = core(frame); + if (!coreFrame) + return ""; + + String string = coreFrame->tree()->uniqueName(); + priv->name = g_strdup(string.utf8().data()); + return priv->name; +} + +/** + * webkit_web_frame_get_parent: + * @frame: a #WebKitWebFrame + * + * Returns the @frame's parent frame, or %NULL if it has none. + * + * Return value: (transfer none): the parent #WebKitWebFrame or %NULL in case there is none + */ +WebKitWebFrame* webkit_web_frame_get_parent(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + return kit(coreFrame->tree()->parent()); +} + +/** + * webkit_web_frame_load_uri: + * @frame: a #WebKitWebFrame + * @uri: an URI string + * + * Requests loading of the specified URI string. + * + * Since: 1.1.1 + */ +void webkit_web_frame_load_uri(WebKitWebFrame* frame, const gchar* uri) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + g_return_if_fail(uri); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + coreFrame->loader()->load(ResourceRequest(KURL(KURL(), String::fromUTF8(uri))), false); +} + +static void webkit_web_frame_load_data(WebKitWebFrame* frame, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseURL, const gchar* unreachableURL) +{ + Frame* coreFrame = core(frame); + ASSERT(coreFrame); + + KURL baseKURL = baseURL ? KURL(KURL(), String::fromUTF8(baseURL)) : blankURL(); + + ResourceRequest request(baseKURL); + + RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(content, strlen(content)); + SubstituteData substituteData(sharedBuffer.release(), + mimeType ? String::fromUTF8(mimeType) : String::fromUTF8("text/html"), + encoding ? String::fromUTF8(encoding) : String::fromUTF8("UTF-8"), + KURL(KURL(), String::fromUTF8(unreachableURL)), + KURL(KURL(), String::fromUTF8(unreachableURL))); + + coreFrame->loader()->load(request, substituteData, false); +} + +/** + * webkit_web_frame_load_string: + * @frame: a #WebKitWebFrame + * @content: an URI string + * @mime_type: the MIME type, or %NULL + * @encoding: the encoding, or %NULL + * @base_uri: the base URI for relative locations + * + * Requests loading of the given @content with the specified @mime_type, + * @encoding and @base_uri. + * + * If @mime_type is %NULL, "text/html" is assumed. + * + * If @encoding is %NULL, "UTF-8" is assumed. + * + * Since: 1.1.1 + */ +void webkit_web_frame_load_string(WebKitWebFrame* frame, const gchar* content, const gchar* contentMimeType, const gchar* contentEncoding, const gchar* baseUri) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + g_return_if_fail(content); + + webkit_web_frame_load_data(frame, content, contentMimeType, contentEncoding, baseUri, 0); +} + +/** + * webkit_web_frame_load_alternate_string: + * @frame: a #WebKitWebFrame + * @content: the alternate content to display as the main page of the @frame + * @base_url: the base URI for relative locations + * @unreachable_url: the URL for the alternate page content + * + * Request loading of an alternate content for a URL that is unreachable. + * Using this method will preserve the back-forward list. The URI passed in + * @base_url has to be an absolute URI. + * + * Since: 1.1.6 + */ +void webkit_web_frame_load_alternate_string(WebKitWebFrame* frame, const gchar* content, const gchar* baseURL, const gchar* unreachableURL) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + g_return_if_fail(content); + + webkit_web_frame_load_data(frame, content, 0, 0, baseURL, unreachableURL); +} + +/** + * webkit_web_frame_load_request: + * @frame: a #WebKitWebFrame + * @request: a #WebKitNetworkRequest + * + * Connects to a given URI by initiating an asynchronous client request. + * + * Creates a provisional data source that will transition to a committed data + * source once any data has been received. Use webkit_web_frame_stop_loading() to + * stop the load. This function is typically invoked on the main frame. + */ +void webkit_web_frame_load_request(WebKitWebFrame* frame, WebKitNetworkRequest* request) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request)); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + coreFrame->loader()->load(core(request), false); +} + +/** + * webkit_web_frame_stop_loading: + * @frame: a #WebKitWebFrame + * + * Stops any pending loads on @frame's data source, and those of its children. + */ +void webkit_web_frame_stop_loading(WebKitWebFrame* frame) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + coreFrame->loader()->stopAllLoaders(); +} + +/** + * webkit_web_frame_reload: + * @frame: a #WebKitWebFrame + * + * Reloads the initial request. + */ +void webkit_web_frame_reload(WebKitWebFrame* frame) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return; + + coreFrame->loader()->reload(); +} + +/** + * webkit_web_frame_find_frame: + * @frame: a #WebKitWebFrame + * @name: the name of the frame to be found + * + * For pre-defined names, returns @frame if @name is "_self" or "_current", + * returns @frame's parent frame if @name is "_parent", and returns the main + * frame if @name is "_top". Also returns @frame if it is the main frame and + * @name is either "_parent" or "_top". For other names, this function returns + * the first frame that matches @name. This function searches @frame and its + * descendents first, then @frame's parent and its children moving up the + * hierarchy until a match is found. If no match is found in @frame's + * hierarchy, this function will search for a matching frame in other main + * frame hierarchies. Returns %NULL if no match is found. + * + * Return value: (transfer none): the found #WebKitWebFrame or %NULL in case none is found + */ +WebKitWebFrame* webkit_web_frame_find_frame(WebKitWebFrame* frame, const gchar* name) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + g_return_val_if_fail(name, 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + String nameString = String::fromUTF8(name); + return kit(coreFrame->tree()->find(AtomicString(nameString))); +} + +/** + * webkit_web_frame_get_global_context: + * @frame: a #WebKitWebFrame + * + * Gets the global JavaScript execution context. Use this function to bridge + * between the WebKit and JavaScriptCore APIs. + * + * Return value: (transfer none): the global JavaScript context + */ +JSGlobalContextRef webkit_web_frame_get_global_context(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + return toGlobalRef(coreFrame->script()->globalObject(mainThreadNormalWorld())->globalExec()); +} + +/** + * webkit_web_frame_get_data_source: + * @frame: a #WebKitWebFrame + * + * Returns the committed data source. + * + * Return value: (transfer none): the committed #WebKitWebDataSource. + * + * Since: 1.1.14 + */ +WebKitWebDataSource* webkit_web_frame_get_data_source(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + return webkit_web_frame_get_data_source_from_core_loader(coreFrame->loader()->documentLoader()); +} + +/** + * webkit_web_frame_get_provisional_data_source: + * @frame: a #WebKitWebFrame + * + * You use the webkit_web_frame_load_request method to initiate a request that + * creates a provisional data source. The provisional data source will + * transition to a committed data source once any data has been received. Use + * webkit_web_frame_get_data_source to get the committed data source. + * + * Return value: (transfer none): the provisional #WebKitWebDataSource or %NULL if a load + * request is not in progress. + * + * Since: 1.1.14 + */ +WebKitWebDataSource* webkit_web_frame_get_provisional_data_source(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); + + Frame* coreFrame = core(frame); + return webkit_web_frame_get_data_source_from_core_loader(coreFrame->loader()->provisionalDocumentLoader()); +} + +static void begin_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data) +{ + PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data); + + float width = gtk_print_context_get_width(context); + float height = gtk_print_context_get_height(context); + FloatRect printRect = FloatRect(0, 0, width, height); + + printContext->begin(width); + + // TODO: Margin adjustments and header/footer support + float headerHeight = 0; + float footerHeight = 0; + float pageHeight; // height of the page adjusted by margins + printContext->computePageRects(printRect, headerHeight, footerHeight, 1.0, pageHeight); + gtk_print_operation_set_n_pages(op, printContext->pageCount()); +} + +static void draw_page_callback(GtkPrintOperation* op, GtkPrintContext* context, gint page_nr, gpointer user_data) +{ + PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data); + + if (page_nr >= printContext->pageCount()) + return; + + cairo_t* cr = gtk_print_context_get_cairo_context(context); + GraphicsContext ctx(cr); + float width = gtk_print_context_get_width(context); + printContext->spoolPage(ctx, page_nr, width); +} + +static void end_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data) +{ + PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data); + printContext->end(); +} + +/** + * webkit_web_frame_print_full: + * @frame: a #WebKitWebFrame to be printed + * @operation: the #GtkPrintOperation to be carried + * @action: the #GtkPrintOperationAction to be performed + * @error: #GError for error return + * + * Prints the given #WebKitWebFrame, using the given #GtkPrintOperation + * and #GtkPrintOperationAction. This function wraps a call to + * gtk_print_operation_run() for printing the contents of the + * #WebKitWebFrame. + * + * Since: 1.1.5 + */ +GtkPrintOperationResult webkit_web_frame_print_full(WebKitWebFrame* frame, GtkPrintOperation* operation, GtkPrintOperationAction action, GError** error) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_PRINT_OPERATION_RESULT_ERROR); + g_return_val_if_fail(GTK_IS_PRINT_OPERATION(operation), GTK_PRINT_OPERATION_RESULT_ERROR); + + GtkWidget* topLevel = gtk_widget_get_toplevel(GTK_WIDGET(webkit_web_frame_get_web_view(frame))); + + if (!gtk_widget_is_toplevel(topLevel)) + topLevel = 0; + + Frame* coreFrame = core(frame); + if (!coreFrame) + return GTK_PRINT_OPERATION_RESULT_ERROR; + + PrintContext printContext(coreFrame); + + g_signal_connect(operation, "begin-print", G_CALLBACK(begin_print_callback), &printContext); + g_signal_connect(operation, "draw-page", G_CALLBACK(draw_page_callback), &printContext); + g_signal_connect(operation, "end-print", G_CALLBACK(end_print_callback), &printContext); + + return gtk_print_operation_run(operation, action, GTK_WINDOW(topLevel), error); +} + +/** + * webkit_web_frame_print: + * @frame: a #WebKitWebFrame + * + * Prints the given #WebKitWebFrame, by presenting a print dialog to the + * user. If you need more control over the printing process, see + * webkit_web_frame_print_full(). + * + * Since: 1.1.5 + */ +void webkit_web_frame_print(WebKitWebFrame* frame) +{ + g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); + + WebKitWebFramePrivate* priv = frame->priv; + GtkPrintOperation* operation = gtk_print_operation_new(); + GError* error = 0; + + webkit_web_frame_print_full(frame, operation, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, &error); + g_object_unref(operation); + + if (error) { + GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(priv->webView)); + GtkWidget* dialog = gtk_message_dialog_new(gtk_widget_is_toplevel(window) ? GTK_WINDOW(window) : 0, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + "%s", error->message); + + g_error_free(error); + + g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); + gtk_widget_show(dialog); + } +} + +gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + WebCore::DocumentLoader* docLoader = coreFrame->loader()->documentLoader(); + String mimeType = docLoader->responseMIMEType(); + return g_strdup(mimeType.utf8().data()); +} + +/** + * webkit_web_frame_get_load_status: + * @frame: a #WebKitWebView + * + * Determines the current status of the load. + * + * Since: 1.1.7 + */ +WebKitLoadStatus webkit_web_frame_get_load_status(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), WEBKIT_LOAD_FINISHED); + + WebKitWebFramePrivate* priv = frame->priv; + return priv->loadStatus; +} + +GtkPolicyType webkit_web_frame_get_horizontal_scrollbar_policy(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_POLICY_AUTOMATIC); + + Frame* coreFrame = core(frame); + FrameView* view = coreFrame->view(); + if (!view) + return GTK_POLICY_AUTOMATIC; + + ScrollbarMode hMode = view->horizontalScrollbarMode(); + + if (hMode == ScrollbarAlwaysOn) + return GTK_POLICY_ALWAYS; + + if (hMode == ScrollbarAlwaysOff) + return GTK_POLICY_NEVER; + + return GTK_POLICY_AUTOMATIC; +} + +GtkPolicyType webkit_web_frame_get_vertical_scrollbar_policy(WebKitWebFrame* frame) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_POLICY_AUTOMATIC); + + Frame* coreFrame = core(frame); + FrameView* view = coreFrame->view(); + if (!view) + return GTK_POLICY_AUTOMATIC; + + ScrollbarMode vMode = view->verticalScrollbarMode(); + + if (vMode == ScrollbarAlwaysOn) + return GTK_POLICY_ALWAYS; + + if (vMode == ScrollbarAlwaysOff) + return GTK_POLICY_NEVER; + + return GTK_POLICY_AUTOMATIC; +} + +/** + * webkit_web_frame_get_security_origin: + * @frame: a #WebKitWebFrame + * + * Returns the @frame's security origin. + * + * Return value: (transfer none): the security origin of @frame + * + * Since: 1.1.14 + */ +WebKitSecurityOrigin* webkit_web_frame_get_security_origin(WebKitWebFrame* frame) +{ + WebKitWebFramePrivate* priv = frame->priv; + if (!priv->coreFrame || !priv->coreFrame->document() || !priv->coreFrame->document()->securityOrigin()) + return 0; + + if (priv->origin && priv->origin->priv->coreOrigin.get() == priv->coreFrame->document()->securityOrigin()) + return priv->origin; + + if (priv->origin) + g_object_unref(priv->origin); + + priv->origin = kit(priv->coreFrame->document()->securityOrigin()); + return priv->origin; +} + +/** + * webkit_web_frame_get_network_response: + * @frame: a #WebKitWebFrame + * + * Returns a #WebKitNetworkResponse object representing the response + * that was given to the request for the given frame, or NULL if the + * frame was not created by a load. You must unref the object when you + * are done with it. + * + * Return value: (transfer full): a #WebKitNetworkResponse object + * + * Since: 1.1.18 + */ +WebKitNetworkResponse* webkit_web_frame_get_network_response(WebKitWebFrame* frame) +{ + Frame* coreFrame = core(frame); + if (!coreFrame) + return 0; + + WebCore::DocumentLoader* loader = coreFrame->loader()->activeDocumentLoader(); + if (!loader) + return 0; + + return kitNew(loader->response()); +} + +namespace WebKit { + +WebKitWebView* getViewFromFrame(WebKitWebFrame* frame) +{ + WebKitWebFramePrivate* priv = frame->priv; + return priv->webView; +} + +WebCore::Frame* core(WebKitWebFrame* frame) +{ + if (!frame) + return 0; + + WebKitWebFramePrivate* priv = frame->priv; + return priv ? priv->coreFrame : 0; +} + +WebKitWebFrame* kit(WebCore::Frame* coreFrame) +{ + if (!coreFrame) + return 0; + + ASSERT(coreFrame->loader()); + WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(coreFrame->loader()->client()); + return client ? client->webFrame() : 0; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebframe.h b/Source/WebKit/gtk/webkit/webkitwebframe.h new file mode 100644 index 0000000..28d7113 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebframe.h @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * Copyright (C) 2007 Alp Toker <alp@atoker.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebframe_h +#define webkitwebframe_h + +#include <glib-object.h> +#include <gtk/gtk.h> + +#include <JavaScriptCore/JSBase.h> + +#include <webkit/webkitdefines.h> +#include <webkit/webkitnetworkrequest.h> +#include <webkit/webkitwebdatasource.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_FRAME (webkit_web_frame_get_type()) +#define WEBKIT_WEB_FRAME(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrame)) +#define WEBKIT_WEB_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrameClass)) +#define WEBKIT_IS_WEB_FRAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_FRAME)) +#define WEBKIT_IS_WEB_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_FRAME)) +#define WEBKIT_WEB_FRAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrameClass)) + +typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate; + +struct _WebKitWebFrame { + GObject parent_instance; + + /*< private >*/ + WebKitWebFramePrivate *priv; +}; + +struct _WebKitWebFrameClass { + GObjectClass parent_class; + + /*< public >*/ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); + void (*_webkit_reserved5) (void); + void (*_webkit_reserved6) (void); +}; + +/** + * WebKitLoadStatus + * @WEBKIT_LOAD_PROVISIONAL: No data has been received yet, empty + * structures have been allocated to perform the load; the load may + * still fail for transport issues such as not being able to resolve a + * name, or connect to a port. + * @WEBKIT_LOAD_COMMITTED: The first data chunk has arrived, meaning + * that the necessary transport requirements are stabilished, and the + * load is being performed. + * @WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: The first layout with + * actual visible content happened; one or more layouts may have + * happened before that caused nothing to be visible on the screen, + * because the data available at the time was not significant enough. + * @WEBKIT_LOAD_FINISHED: This state means that everything that was + * required to display the page has been loaded. + * @WEBKIT_LOAD_FAILED: This state means that some error occurred + * during the page load that prevented it from being completed. You + * can connect to the #WebKitWebView::load-error signal if you want to + * know precisely what kind of error occurred. + */ +typedef enum { + WEBKIT_LOAD_PROVISIONAL, + WEBKIT_LOAD_COMMITTED, + WEBKIT_LOAD_FINISHED, + WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT, + WEBKIT_LOAD_FAILED +} WebKitLoadStatus; + +WEBKIT_API GType +webkit_web_frame_get_type (void); + +#ifndef WEBKIT_DISABLE_DEPRECATED +WEBKIT_API WebKitWebFrame * +webkit_web_frame_new (WebKitWebView *web_view); +#endif + +WEBKIT_API WebKitWebView * +webkit_web_frame_get_web_view (WebKitWebFrame *frame); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_frame_get_name (WebKitWebFrame *frame); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_frame_get_title (WebKitWebFrame *frame); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_frame_get_uri (WebKitWebFrame *frame); + +WEBKIT_API WebKitWebFrame* +webkit_web_frame_get_parent (WebKitWebFrame *frame); + +WEBKIT_API void +webkit_web_frame_load_uri (WebKitWebFrame *frame, + const gchar *uri); + +WEBKIT_API void +webkit_web_frame_load_string (WebKitWebFrame *frame, + const gchar *content, + const gchar *mime_type, + const gchar *encoding, + const gchar *base_uri); + +WEBKIT_API void +webkit_web_frame_load_alternate_string (WebKitWebFrame *frame, + const gchar *content, + const gchar *base_url, + const gchar *unreachable_url); + +WEBKIT_API void +webkit_web_frame_load_request (WebKitWebFrame *frame, + WebKitNetworkRequest *request); + +WEBKIT_API void +webkit_web_frame_stop_loading (WebKitWebFrame *frame); + +WEBKIT_API void +webkit_web_frame_reload (WebKitWebFrame *frame); + +WEBKIT_API WebKitWebFrame * +webkit_web_frame_find_frame (WebKitWebFrame *frame, + const gchar *name); + +WEBKIT_API JSGlobalContextRef +webkit_web_frame_get_global_context (WebKitWebFrame *frame); + +WEBKIT_API GtkPrintOperationResult +webkit_web_frame_print_full (WebKitWebFrame *frame, + GtkPrintOperation *operation, + GtkPrintOperationAction action, + GError **error); + +WEBKIT_API void +webkit_web_frame_print (WebKitWebFrame *frame); + +WEBKIT_API WebKitLoadStatus +webkit_web_frame_get_load_status (WebKitWebFrame *frame); + +WEBKIT_API GtkPolicyType +webkit_web_frame_get_horizontal_scrollbar_policy (WebKitWebFrame *frame); + +WEBKIT_API GtkPolicyType +webkit_web_frame_get_vertical_scrollbar_policy (WebKitWebFrame *frame); + +WEBKIT_API WebKitWebDataSource * +webkit_web_frame_get_data_source (WebKitWebFrame *frame); + +WEBKIT_API WebKitWebDataSource * +webkit_web_frame_get_provisional_data_source (WebKitWebFrame *frame); + +WEBKIT_API WebKitSecurityOrigin* +webkit_web_frame_get_security_origin (WebKitWebFrame *frame); + +WEBKIT_API WebKitNetworkResponse* +webkit_web_frame_get_network_response (WebKitWebFrame *frame); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebframeprivate.h b/Source/WebKit/gtk/webkit/webkitwebframeprivate.h new file mode 100644 index 0000000..80210d8 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebframeprivate.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebframeprivate_h +#define webkitwebframeprivate_h + +#include "Frame.h" +#include "webkitwebframe.h" + +namespace WebKit { + +WebKitWebView* getViewFromFrame(WebKitWebFrame*); + +WebCore::Frame* core(WebKitWebFrame*); +WebKitWebFrame* kit(WebCore::Frame*); + +} + +extern "C" { + +typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate; +struct _WebKitWebFramePrivate { + WebCore::Frame* coreFrame; + WebKitWebView* webView; + + gchar* name; + gchar* title; + gchar* uri; + WebKitLoadStatus loadStatus; + WebKitSecurityOrigin* origin; +}; + +void webkit_web_frame_core_frame_gone(WebKitWebFrame*); + +// FIXME: move this functionality into 'WebKitWebDataSource'? +WEBKIT_API gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp new file mode 100644 index 0000000..eabdc49 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp @@ -0,0 +1,529 @@ +/* + * Copyright (C) 2008, 2009 Jan Michael C. Alonzo + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebhistoryitem.h" + +#include "HistoryItem.h" +#include "PlatformString.h" +#include "webkitglobalsprivate.h" +#include "webkitwebhistoryitemprivate.h" +#include <glib.h> +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitwebhistoryitem + * @short_description: One item of the #WebKitWebBackForwardList and or global history + * @see_also: #WebKitWebBackForwardList + * + * A history item consists out of a title and a uri. It can be part of the + * #WebKitWebBackForwardList and the global history. The global history is used + * for coloring the links of visited sites. #WebKitWebHistoryItem's constructed with + * #webkit_web_history_item_new and #webkit_web_history_item_new_with_data are + * automatically added to the global history. + * + * <informalexample><programlisting> + * /<!-- -->* Inject a visited page into the global history *<!-- -->/ + * webkit_web_history_item_new_with_data("http://www.gnome.org/", "GNOME: The Free Software Desktop Project"); + * webkit_web_history_item_new_with_data("http://www.webkit.org/", "The WebKit Open Source Project"); + * </programlisting></informalexample> + * + */ + +using namespace WebKit; + +struct _WebKitWebHistoryItemPrivate { + WebCore::HistoryItem* historyItem; + + WTF::CString title; + WTF::CString alternateTitle; + WTF::CString uri; + WTF::CString originalUri; + + gboolean disposed; +}; + +enum { + PROP_0, + + PROP_TITLE, + PROP_ALTERNATE_TITLE, + PROP_URI, + PROP_ORIGINAL_URI, + PROP_LAST_VISITED_TIME +}; + +G_DEFINE_TYPE(WebKitWebHistoryItem, webkit_web_history_item, G_TYPE_OBJECT); + +static void webkit_web_history_item_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_history_item_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); + +GHashTable* webkit_history_items() +{ + static GHashTable* historyItems = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_object_unref); + return historyItems; +} + +void webkit_history_item_add(WebKitWebHistoryItem* webHistoryItem, WebCore::HistoryItem* historyItem) +{ + g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem)); + + GHashTable* table = webkit_history_items(); + g_hash_table_insert(table, historyItem, webHistoryItem); +} + +static void webkit_web_history_item_dispose(GObject* object) +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object); + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + + if (!priv->disposed) { + WebCore::HistoryItem* item = core(webHistoryItem); + item->deref(); + priv->disposed = true; + } + + G_OBJECT_CLASS(webkit_web_history_item_parent_class)->dispose(object); +} + +static void webkit_web_history_item_finalize(GObject* object) +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object); + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + + priv->title = WTF::CString(); + priv->alternateTitle = WTF::CString(); + priv->uri = WTF::CString(); + priv->originalUri = WTF::CString(); + + G_OBJECT_CLASS(webkit_web_history_item_parent_class)->finalize(object); +} + +static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + + gobject_class->dispose = webkit_web_history_item_dispose; + gobject_class->finalize = webkit_web_history_item_finalize; + gobject_class->set_property = webkit_web_history_item_set_property; + gobject_class->get_property = webkit_web_history_item_get_property; + + webkitInit(); + + /** + * WebKitWebHistoryItem:title: + * + * The title of the history item. + * + * Since: 1.0.2 + */ + g_object_class_install_property(gobject_class, + PROP_TITLE, + g_param_spec_string( + "title", + _("Title"), + _("The title of the history item"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebHistoryItem:alternate-title: + * + * The alternate title of the history item. + * + * Since: 1.0.2 + */ + g_object_class_install_property(gobject_class, + PROP_ALTERNATE_TITLE, + g_param_spec_string( + "alternate-title", + _("Alternate Title"), + _("The alternate title of the history item"), + NULL, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebHistoryItem:uri: + * + * The URI of the history item. + * + * Since: 1.0.2 + */ + g_object_class_install_property(gobject_class, + PROP_URI, + g_param_spec_string( + "uri", + _("URI"), + _("The URI of the history item"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebHistoryItem:original-uri: + * + * The original URI of the history item. + * + * Since: 1.0.2 + */ + g_object_class_install_property(gobject_class, + PROP_ORIGINAL_URI, + g_param_spec_string( + "original-uri", + _("Original URI"), + _("The original URI of the history item"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebHistoryItem:last-visited-time: + * + * The time at which the history item was last visited. + * + * Since: 1.0.2 + */ + g_object_class_install_property(gobject_class, + PROP_LAST_VISITED_TIME, + g_param_spec_double( + "last-visited-time", + _("Last visited Time"), + _("The time at which the history item was last visited"), + 0, G_MAXDOUBLE, 0, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(gobject_class, sizeof(WebKitWebHistoryItemPrivate)); +} + +static void webkit_web_history_item_init(WebKitWebHistoryItem* webHistoryItem) +{ + webHistoryItem->priv = G_TYPE_INSTANCE_GET_PRIVATE(webHistoryItem, WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemPrivate); +} + +static void webkit_web_history_item_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object); + + switch(prop_id) { + case PROP_ALTERNATE_TITLE: + webkit_web_history_item_set_alternate_title(webHistoryItem, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_history_item_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object); + + switch (prop_id) { + case PROP_TITLE: + g_value_set_string(value, webkit_web_history_item_get_title(webHistoryItem)); + break; + case PROP_ALTERNATE_TITLE: + g_value_set_string(value, webkit_web_history_item_get_alternate_title(webHistoryItem)); + break; + case PROP_URI: + g_value_set_string(value, webkit_web_history_item_get_uri(webHistoryItem)); + break; + case PROP_ORIGINAL_URI: + g_value_set_string(value, webkit_web_history_item_get_original_uri(webHistoryItem)); + break; + case PROP_LAST_VISITED_TIME: + g_value_set_double(value, webkit_web_history_item_get_last_visited_time(webHistoryItem)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +/* Helper function to create a new WebHistoryItem instance when needed */ +WebKitWebHistoryItem* webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem> historyItem) +{ + return kit(historyItem); +} + + +/** + * webkit_web_history_item_new: + * + * Creates a new #WebKitWebHistoryItem instance + * + * Return value: the new #WebKitWebHistoryItem + */ +WebKitWebHistoryItem* webkit_web_history_item_new() +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL)); + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + + RefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create(); + priv->historyItem = item.release().releaseRef(); + webkit_history_item_add(webHistoryItem, priv->historyItem); + + return webHistoryItem; +} + +/** + * webkit_web_history_item_new_with_data: + * @uri: the uri of the page + * @title: the title of the page + * + * Creates a new #WebKitWebHistoryItem with the given URI and title + * + * Return value: the new #WebKitWebHistoryItem + */ +WebKitWebHistoryItem* webkit_web_history_item_new_with_data(const gchar* uri, const gchar* title) +{ + WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL)); + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + + WebCore::KURL historyUri(WebCore::KURL(), uri); + WTF::String historyTitle = WTF::String::fromUTF8(title); + RefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create(historyUri, historyTitle, 0); + priv->historyItem = item.release().releaseRef(); + webkit_history_item_add(webHistoryItem, priv->historyItem); + + return webHistoryItem; +} + +/** + * webkit_web_history_item_get_title: + * @web_history_item: a #WebKitWebHistoryItem + * + * Returns: the page title of @web_history_item + */ +G_CONST_RETURN gchar* webkit_web_history_item_get_title(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(webHistoryItem); + + g_return_val_if_fail(item, NULL); + + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + priv->title = item->title().utf8(); + + return priv->title.data(); +} + +/** + * webkit_web_history_item_get_alternate_title: + * @web_history_item: a #WebKitWebHistoryItem + * + * Returns the alternate title of @web_history_item + * + * Return value: the alternate title of @web_history_item + */ +G_CONST_RETURN gchar* webkit_web_history_item_get_alternate_title(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(webHistoryItem); + + g_return_val_if_fail(item, NULL); + + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + priv->alternateTitle = item->alternateTitle().utf8(); + + return priv->alternateTitle.data(); +} + +/** + * webkit_web_history_item_set_alternate_title: + * @web_history_item: a #WebKitWebHistoryItem + * @title: the alternate title for @this history item + * + * Sets an alternate title for @web_history_item + */ +void webkit_web_history_item_set_alternate_title(WebKitWebHistoryItem* webHistoryItem, const gchar* title) +{ + g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem)); + g_return_if_fail(title); + + WebCore::HistoryItem* item = core(webHistoryItem); + + item->setAlternateTitle(WTF::String::fromUTF8(title)); + g_object_notify(G_OBJECT(webHistoryItem), "alternate-title"); +} + +/** + * webkit_web_history_item_get_uri: + * @web_history_item: a #WebKitWebHistoryItem + * + * Returns the URI of @this + * + * Return value: the URI of @web_history_item + */ +G_CONST_RETURN gchar* webkit_web_history_item_get_uri(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem)); + + g_return_val_if_fail(item, NULL); + + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + priv->uri = item->urlString().utf8(); + + return priv->uri.data(); +} + +/** + * webkit_web_history_item_get_original_uri: + * @web_history_item: a #WebKitWebHistoryItem + * + * Returns the original URI of @web_history_item. + * + * Return value: the original URI of @web_history_item + */ +G_CONST_RETURN gchar* webkit_web_history_item_get_original_uri(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem)); + + g_return_val_if_fail(item, NULL); + + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + priv->originalUri = item->originalURLString().utf8(); + + return webHistoryItem->priv->originalUri.data(); +} + +/** + * webkit_web_history_item_get_last_visisted_time : + * @web_history_item: a #WebKitWebHistoryItem + * + * Returns the last time @web_history_item was visited + * + * Return value: the time in seconds this @web_history_item was last visited + */ +gdouble webkit_web_history_item_get_last_visited_time(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), 0); + + WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem)); + + g_return_val_if_fail(item, 0); + + return item->lastVisitedTime(); +} + +/** + * webkit_web_history_item_copy: + * @web_history_item: a #WebKitWebHistoryItem + * + * Makes a copy of the item for use with other WebView objects. + * + * Since: 1.1.18 + * + * Return value: (transfer full): the new #WebKitWebHistoryItem. + */ +WebKitWebHistoryItem* webkit_web_history_item_copy(WebKitWebHistoryItem* self) +{ + WebKitWebHistoryItemPrivate* selfPrivate = self->priv; + + WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, 0)); + WebKitWebHistoryItemPrivate* priv = item->priv; + + priv->title = selfPrivate->title; + priv->alternateTitle = selfPrivate->alternateTitle; + priv->uri = selfPrivate->uri; + priv->originalUri = selfPrivate->originalUri; + + priv->historyItem = selfPrivate->historyItem->copy().releaseRef(); + + return item; +} + +/* private methods */ + +G_CONST_RETURN gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(webHistoryItem); + + g_return_val_if_fail(item, NULL); + + WTF::CString t = item->target().utf8(); + return g_strdup(t.data()); +} + +gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), false); + + WebCore::HistoryItem* item = core(webHistoryItem); + + g_return_val_if_fail(item, false); + + return item->isTargetItem(); +} + +GList* webkit_web_history_item_get_children(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + WebCore::HistoryItem* item = core(webHistoryItem); + + g_return_val_if_fail(item, NULL); + + const WebCore::HistoryItemVector& children = item->children(); + if (!children.size()) + return NULL; + + unsigned size = children.size(); + GList* kids = NULL; + for (unsigned i = 0; i < size; ++i) + kids = g_list_prepend(kids, kit(children[i].get())); + + return g_list_reverse(kids); +} + +WebCore::HistoryItem* WebKit::core(WebKitWebHistoryItem* webHistoryItem) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL); + + return webHistoryItem->priv->historyItem; +} + +WebKitWebHistoryItem* WebKit::kit(PassRefPtr<WebCore::HistoryItem> historyItem) +{ + g_return_val_if_fail(historyItem, NULL); + + RefPtr<WebCore::HistoryItem> item = historyItem; + GHashTable* table = webkit_history_items(); + WebKitWebHistoryItem* webHistoryItem = (WebKitWebHistoryItem*) g_hash_table_lookup(table, item.get()); + + if (!webHistoryItem) { + webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL)); + WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv; + + priv->historyItem = item.release().releaseRef(); + webkit_history_item_add(webHistoryItem, priv->historyItem); + } + + return webHistoryItem; +} + diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h new file mode 100644 index 0000000..1820736 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2008 Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebhistoryitem_h +#define webkitwebhistoryitem_h + +#include <glib.h> +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_HISTORY_ITEM (webkit_web_history_item_get_type()) +#define WEBKIT_WEB_HISTORY_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItem)) +#define WEBKIT_WEB_HISTORY_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemClass)) +#define WEBKIT_IS_WEB_HISTORY_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM)) +#define WEBKIT_IS_WEB_HISTORY_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_HISTORY_ITEM)) +#define WEBKIT_WEB_HISTORY_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemClass)) + +typedef struct _WebKitWebHistoryItemPrivate WebKitWebHistoryItemPrivate; + +struct _WebKitWebHistoryItem { + GObject parent_instance; + + /*< private >*/ + WebKitWebHistoryItemPrivate *priv; +}; + +struct _WebKitWebHistoryItemClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_history_item_get_type (void); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_history_item_new (void); + +WEBKIT_API WebKitWebHistoryItem * +webkit_web_history_item_new_with_data (const gchar *uri, + const gchar *title); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_history_item_get_title (WebKitWebHistoryItem *web_history_item); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_history_item_get_alternate_title (WebKitWebHistoryItem *web_history_item); + +WEBKIT_API void +webkit_web_history_item_set_alternate_title (WebKitWebHistoryItem *web_history_item, + const gchar *title); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_history_item_get_uri (WebKitWebHistoryItem *web_history_item); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_history_item_get_original_uri (WebKitWebHistoryItem *web_history_item); + +WEBKIT_API gdouble +webkit_web_history_item_get_last_visited_time (WebKitWebHistoryItem *web_history_item); + +WEBKIT_API WebKitWebHistoryItem* +webkit_web_history_item_copy (WebKitWebHistoryItem *web_history_item); + +G_END_DECLS + +#endif /* webkitwebhistoryitem_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h b/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h new file mode 100644 index 0000000..22b50ee --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebhistoryitemprivate_h +#define webkitwebhistoryitemprivate_h + +#include "HistoryItem.h" + +namespace WebKit { + +WebCore::HistoryItem* core(WebKitWebHistoryItem*); +WebKitWebHistoryItem* kit(PassRefPtr<WebCore::HistoryItem>); + +} + +extern "C" { + +GHashTable* webkit_history_items(); + +WebKitWebHistoryItem* webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem>); + +WEBKIT_API G_CONST_RETURN gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem*); + +WEBKIT_API gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem*); + +WEBKIT_API GList* webkit_web_history_item_get_children(WebKitWebHistoryItem*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebinspector.cpp b/Source/WebKit/gtk/webkit/webkitwebinspector.cpp new file mode 100644 index 0000000..df63c63 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebinspector.cpp @@ -0,0 +1,620 @@ +/* + * Copyright (C) 2008 Gustavo Noronha Silva + * Copyright (C) 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2009 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebinspector.h" + +#include "DumpRenderTreeSupportGtk.h" +#include "FocusController.h" +#include "Frame.h" +#include "HitTestRequest.h" +#include "HitTestResult.h" +#include "InspectorClientGtk.h" +#include "InspectorController.h" +#include "IntPoint.h" +#include "Page.h" +#include "RenderLayer.h" +#include "RenderView.h" +#include "webkit/WebKitDOMNodePrivate.h" +#include "webkitglobalsprivate.h" +#include "webkitmarshal.h" +#include "webkitwebinspectorprivate.h" +#include <glib/gi18n-lib.h> + +/** + * SECTION:webkitwebinspector + * @short_description: Access to the WebKit Inspector + * + * The WebKit Inspector is a graphical tool to inspect and change + * the content of a #WebKitWebView. It also includes an interactive + * JavaScriptDebugger. Using this class one can get a GtkWidget which + * can be embedded into an application to show the inspector. + * + * The inspector is available when the #WebKitWebSettings of the + * #WebKitWebView has set the #WebKitWebSettings:enable-developer-extras + * to true otherwise no inspector is available. + * + * <informalexample><programlisting> + * /<!-- -->* Enable the developer extras *<!-- -->/ + * WebKitWebSettings *setting = webkit_web_view_get_settings (WEBKIT_WEB_VIEW(my_webview)); + * g_object_set (G_OBJECT(settings), "enable-developer-extras", TRUE, NULL); + * + * /<!-- -->* load some data or reload to be able to inspect the page*<!-- -->/ + * webkit_web_view_open (WEBKIT_WEB_VIEW(my_webview), "http://www.gnome.org"); + * + * /<!-- -->* Embed the inspector somewhere *<!-- -->/ + * WebKitWebInspector *inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW(my_webview)); + * g_signal_connect (G_OBJECT (inspector), "inspect-web-view", G_CALLBACK(create_gtk_window_around_it), NULL); + * g_signal_connect (G_OBJECT (inspector), "show-window", G_CALLBACK(show_inpector_window), NULL)); + * g_signal_connect (G_OBJECT (inspector), "notify::inspected-uri", G_CALLBACK(inspected_uri_changed_do_stuff), NULL); + * </programlisting></informalexample> + */ + +using namespace WebKit; +using namespace WebCore; + +enum { + INSPECT_WEB_VIEW, + SHOW_WINDOW, + ATTACH_WINDOW, + DETACH_WINDOW, + CLOSE_WINDOW, + FINISHED, + LAST_SIGNAL +}; + +static guint webkit_web_inspector_signals[LAST_SIGNAL] = { 0, }; + +enum { + PROP_0, + + PROP_WEB_VIEW, + PROP_INSPECTED_URI, + PROP_JAVASCRIPT_PROFILING_ENABLED, + PROP_TIMELINE_PROFILING_ENABLED +}; + +G_DEFINE_TYPE(WebKitWebInspector, webkit_web_inspector, G_TYPE_OBJECT) + +struct _WebKitWebInspectorPrivate { + WebCore::Page* page; + WebKitWebView* inspector_view; + gchar* inspected_uri; +}; + +static void webkit_web_inspector_finalize(GObject* object); + +static void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); + +static gboolean webkit_inspect_web_view_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy) +{ + gboolean continueEmission = TRUE; + gpointer newWebView = g_value_get_object(handlerReturn); + g_value_set_object(returnAccu, newWebView); + + if (newWebView) + continueEmission = FALSE; + + return continueEmission; +} + +static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + gobject_class->finalize = webkit_web_inspector_finalize; + gobject_class->set_property = webkit_web_inspector_set_property; + gobject_class->get_property = webkit_web_inspector_get_property; + + /** + * WebKitWebInspector::inspect-web-view: + * @web_inspector: the object on which the signal is emitted + * @web_view: the #WebKitWebView which will be inspected + * + * Emitted when the user activates the 'inspect' context menu item + * to inspect a web view. The application which is interested in + * the inspector should create a window, or otherwise add the + * #WebKitWebView it creates to an existing window. + * + * You don't need to handle the reference count of the + * #WebKitWebView instance you create; the widget to which you add + * it will do that. + * + * Return value: (transfer none): a newly allocated #WebKitWebView or %NULL + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[INSPECT_WEB_VIEW] = g_signal_new("inspect-web-view", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + webkit_inspect_web_view_request_handled, + NULL, + webkit_marshal_OBJECT__OBJECT, + WEBKIT_TYPE_WEB_VIEW , 1, + WEBKIT_TYPE_WEB_VIEW); + + /** + * WebKitWebInspector::show-window: + * @web_inspector: the object on which the signal is emitted + * @return: %TRUE if the signal has been handled + * + * Emitted when the inspector window should be displayed. Notice + * that the window must have been created already by handling + * #WebKitWebInspector::inspect-web-view. + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[SHOW_WINDOW] = g_signal_new("show-window", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN , 0); + + /** + * WebKitWebInspector::attach-window: + * @web_inspector: the object on which the signal is emitted + * @return: %TRUE if the signal has been handled + * + * Emitted when the inspector should appear at the same window as + * the #WebKitWebView being inspected. + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[ATTACH_WINDOW] = g_signal_new("attach-window", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN , 0); + + /** + * WebKitWebInspector::detach-window: + * @web_inspector: the object on which the signal is emitted + * @return: %TRUE if the signal has been handled + * + * Emitted when the inspector should appear in a separate window. + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[DETACH_WINDOW] = g_signal_new("detach-window", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN , 0); + + /** + * WebKitWebInspector::close-window: + * @web_inspector: the object on which the signal is emitted + * @return: %TRUE if the signal has been handled + * + * Emitted when the inspector window should be closed. You can + * destroy the window or hide it so that it can be displayed again + * by handling #WebKitWebInspector::show-window later on. + * + * Notice that the inspected #WebKitWebView may no longer exist + * when this signal is emitted. + * + * Notice, too, that if you decide to destroy the window, + * #WebKitWebInspector::inspect-web-view will be emmited again, when the user + * inspects an element. + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[CLOSE_WINDOW] = g_signal_new("close-window", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN , 0); + + /** + * WebKitWebInspector::finished: + * @web_inspector: the object on which the signal is emitted + * + * Emitted when the inspection is done. You should release your + * references on the inspector at this time. The inspected + * #WebKitWebView may no longer exist when this signal is emitted. + * + * Since: 1.0.3 + */ + webkit_web_inspector_signals[FINISHED] = g_signal_new("finished", + G_TYPE_FROM_CLASS(klass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE , 0); + + /* + * properties + */ + + /** + * WebKitWebInspector:web-view: + * + * The Web View that renders the Web Inspector itself. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, PROP_WEB_VIEW, + g_param_spec_object("web-view", + _("Web View"), + _("The Web View that renders the Web Inspector itself"), + WEBKIT_TYPE_WEB_VIEW, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebInspector:inspected-uri: + * + * The URI that is currently being inspected. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, PROP_INSPECTED_URI, + g_param_spec_string("inspected-uri", + _("Inspected URI"), + _("The URI that is currently being inspected"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebInspector:javascript-profiling-enabled + * + * This is enabling JavaScript profiling in the Inspector. This means + * that Console.profiles will return the profiles. + * + * Since: 1.1.1 + */ + g_object_class_install_property(gobject_class, + PROP_JAVASCRIPT_PROFILING_ENABLED, + g_param_spec_boolean( + "javascript-profiling-enabled", + _("Enable JavaScript profiling"), + _("Profile the executed JavaScript."), + FALSE, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebInspector:timeline-profiling-enabled + * + * This is enabling Timeline profiling in the Inspector. + * + * Since: 1.1.17 + */ + g_object_class_install_property(gobject_class, + PROP_TIMELINE_PROFILING_ENABLED, + g_param_spec_boolean( + "timeline-profiling-enabled", + _("Enable Timeline profiling"), + _("Profile the WebCore instrumentation."), + FALSE, + WEBKIT_PARAM_READWRITE)); + + g_type_class_add_private(klass, sizeof(WebKitWebInspectorPrivate)); +} + +static void webkit_web_inspector_init(WebKitWebInspector* web_inspector) +{ + web_inspector->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_inspector, WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorPrivate); +} + +static void webkit_web_inspector_finalize(GObject* object) +{ + WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + if (priv->inspector_view) + g_object_unref(priv->inspector_view); + + if (priv->inspected_uri) + g_free(priv->inspected_uri); + + G_OBJECT_CLASS(webkit_web_inspector_parent_class)->finalize(object); +} + +static void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + switch(prop_id) { + case PROP_JAVASCRIPT_PROFILING_ENABLED: { +#if ENABLE(JAVASCRIPT_DEBUGGER) + bool enabled = g_value_get_boolean(value); + WebCore::InspectorController* controller = priv->page->inspectorController(); + if (enabled) + controller->enableProfiler(); + else + controller->disableProfiler(); +#else + g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n"); +#endif + break; + } + case PROP_TIMELINE_PROFILING_ENABLED: { + bool enabled = g_value_get_boolean(value); + WebCore::InspectorController* controller = priv->page->inspectorController(); + if (enabled) + controller->startTimelineProfiler(); + else + controller->stopTimelineProfiler(); + break; + } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object); + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + switch (prop_id) { + case PROP_WEB_VIEW: + g_value_set_object(value, priv->inspector_view); + break; + case PROP_INSPECTED_URI: + g_value_set_string(value, priv->inspected_uri); + break; + case PROP_JAVASCRIPT_PROFILING_ENABLED: +#if ENABLE(JAVASCRIPT_DEBUGGER) + g_value_set_boolean(value, priv->page->inspectorController()->profilerEnabled()); +#else + g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n"); +#endif + break; + case PROP_TIMELINE_PROFILING_ENABLED: + g_value_set_boolean(value, priv->page->inspectorController()->timelineAgent() != 0); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +// internal use only +void webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector)); + g_return_if_fail(WEBKIT_IS_WEB_VIEW(web_view)); + + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + if (priv->inspector_view) + g_object_unref(priv->inspector_view); + + g_object_ref(web_view); + priv->inspector_view = web_view; +} + +/** + * webkit_web_inspector_get_web_view: + * + * Obtains the #WebKitWebView that is used to render the + * inspector. The #WebKitWebView instance is created by the + * application, by handling the #WebKitWebInspector::inspect-web-view signal. This means + * that this method may return %NULL if the user hasn't inspected + * anything. + * + * Returns: (transfer none): the #WebKitWebView instance that is used + * to render the inspector or %NULL if it is not yet created. + * + * Since: 1.0.3 + **/ +WebKitWebView* webkit_web_inspector_get_web_view(WebKitWebInspector *web_inspector) +{ + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + return priv->inspector_view; +} + +// internal use only +void webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector)); + + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + g_free(priv->inspected_uri); + priv->inspected_uri = g_strdup(inspected_uri); +} + +/** + * webkit_web_inspector_get_inspected_uri: + * + * Obtains the URI that is currently being inspected. + * + * Returns: a pointer to the URI as an internally allocated string; it + * should not be freed, modified or stored. + * + * Since: 1.0.3 + **/ +const gchar* webkit_web_inspector_get_inspected_uri(WebKitWebInspector *web_inspector) +{ + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + return priv->inspected_uri; +} + +void +webkit_web_inspector_set_inspector_client(WebKitWebInspector* web_inspector, WebCore::Page* page) +{ + WebKitWebInspectorPrivate* priv = web_inspector->priv; + + priv->page = page; +} + +/** + * webkit_web_inspector_show: + * @webInspector: the #WebKitWebInspector that will be shown + * + * Causes the Web Inspector to be shown. + * + * Since: 1.1.17 + */ +void webkit_web_inspector_show(WebKitWebInspector* webInspector) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); + + WebKitWebInspectorPrivate* priv = webInspector->priv; + + Frame* frame = priv->page->focusController()->focusedOrMainFrame(); + FrameView* view = frame->view(); + + if (!view) + return; + + priv->page->inspectorController()->show(); +} + +/** + * webkit_web_inspector_inspect_node: + * @web_inspector: the #WebKitWebInspector that will do the inspection + * @node: the #WebKitDOMNode to inspect + * + * Causes the Web Inspector to inspect the given node. + * + * Since: 1.3.7 + */ +void webkit_web_inspector_inspect_node(WebKitWebInspector* webInspector, WebKitDOMNode* node) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); + g_return_if_fail(WEBKIT_DOM_IS_NODE(node)); + + webInspector->priv->page->inspectorController()->inspect(core(node)); +} + +/** + * webkit_web_inspector_inspect_coordinates: + * @web_inspector: the #WebKitWebInspector that will do the inspection + * @x: the X coordinate of the node to be inspected + * @y: the Y coordinate of the node to be inspected + * + * Causes the Web Inspector to inspect the node that is located at the + * given coordinates of the widget. The coordinates should be relative + * to the #WebKitWebView widget, not to the scrollable content, and + * may be obtained from a #GdkEvent directly. + * + * This means @x, and @y being zero doesn't guarantee you will hit the + * left-most top corner of the content, since the contents may have + * been scrolled. + * + * Since: 1.1.17 + */ +void webkit_web_inspector_inspect_coordinates(WebKitWebInspector* webInspector, gdouble x, gdouble y) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); + g_return_if_fail(x >= 0 && y >= 0); + + WebKitWebInspectorPrivate* priv = webInspector->priv; + + Frame* frame = priv->page->focusController()->focusedOrMainFrame(); + FrameView* view = frame->view(); + + if (!view) + return; + + HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); + IntPoint documentPoint = view->windowToContents(IntPoint(static_cast<int>(x), static_cast<int>(y))); + HitTestResult result(documentPoint); + + frame->contentRenderer()->layer()->hitTest(request, result); + priv->page->inspectorController()->inspect(result.innerNonSharedNode()); +} + +/** + * webkit_web_inspector_close: + * @webInspector: the #WebKitWebInspector that will be closed + * + * Causes the Web Inspector to be closed. + * + * Since: 1.1.17 + */ +void webkit_web_inspector_close(WebKitWebInspector* webInspector) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); + + WebKitWebInspectorPrivate* priv = webInspector->priv; + priv->page->inspectorController()->close(); +} + +void webkit_web_inspector_execute_script(WebKitWebInspector* webInspector, long callId, const gchar* script) +{ + g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector)); + g_return_if_fail(script); + + WebKitWebInspectorPrivate* priv = webInspector->priv; + priv->page->inspectorController()->evaluateForTestInFrontend(callId, script); +} + +#ifdef HAVE_GSETTINGS +static bool isSchemaAvailable(const char* schemaID) +{ + const char* const* availableSchemas = g_settings_list_schemas(); + char* const* iter = const_cast<char* const*>(availableSchemas); + + while (*iter) { + if (g_str_equal(schemaID, *iter)) + return true; + iter++; + } + + return false; +} + +GSettings* inspectorGSettings() +{ + static GSettings* settings = 0; + if (settings) + return settings; + + // Unfortunately GSettings will abort the process execution if the schema is not + // installed, which is the case for when running tests, or even the introspection dump + // at build time, so check if we have the schema before trying to initialize it. + const gchar* schemaID = "org.webkitgtk-"WEBKITGTK_API_VERSION_STRING".inspector"; + if (!isSchemaAvailable(schemaID)) { + + // This warning is very common on the build bots, which hides valid warnings. + // Skip printing it if we are running inside DumpRenderTree. + if (!DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()) + g_warning("GSettings schema not found - settings will not be used or saved."); + return 0; + } + + settings = g_settings_new(schemaID); + return settings; +} +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebinspector.h b/Source/WebKit/gtk/webkit/webkitwebinspector.h new file mode 100644 index 0000000..458e370 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebinspector.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2008 Gustavo Noronha Silva + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebinspector_h +#define webkitwebinspector_h + +#include <glib-object.h> + +#include <webkit/webkitdomdefines.h> +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_INSPECTOR (webkit_web_inspector_get_type()) +#define WEBKIT_WEB_INSPECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspector)) +#define WEBKIT_WEB_INSPECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorClass)) +#define WEBKIT_IS_WEB_INSPECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_INSPECTOR)) +#define WEBKIT_IS_WEB_INSPECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_INSPECTOR)) +#define WEBKIT_WEB_INSPECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorClass)) + +typedef struct _WebKitWebInspectorPrivate WebKitWebInspectorPrivate; + +struct _WebKitWebInspector { + GObject parent_instance; + + WebKitWebInspectorPrivate* priv; +}; + +struct _WebKitWebInspectorClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); +}; + +WEBKIT_API GType +webkit_web_inspector_get_type (void); + +WEBKIT_API WebKitWebView* +webkit_web_inspector_get_web_view(WebKitWebInspector* web_inspector); + +WEBKIT_API const gchar* +webkit_web_inspector_get_inspected_uri(WebKitWebInspector* web_inspector); + +WEBKIT_API void +webkit_web_inspector_inspect_node(WebKitWebInspector* webInspector, WebKitDOMNode* node); + +WEBKIT_API void +webkit_web_inspector_inspect_coordinates(WebKitWebInspector* web_inspector, gdouble x, gdouble y); + +WEBKIT_API void +webkit_web_inspector_show(WebKitWebInspector* webInspector); + +WEBKIT_API void +webkit_web_inspector_close(WebKitWebInspector* webInspector); +G_END_DECLS + +#endif /* webkitwebinspector_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h b/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h new file mode 100644 index 0000000..46d57b0 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebinspectorprivate_h +#define webkitwebinspectorprivate_h + +extern "C" { + +#ifdef HAVE_GSETTINGS +GSettings* inspectorGSettings(); +#endif + +void webkit_web_inspector_set_inspector_client(WebKitWebInspector*, WebCore::Page*); + +void webkit_web_inspector_set_web_view(WebKitWebInspector*, WebKitWebView*); + +void webkit_web_inspector_set_inspected_uri(WebKitWebInspector*, const gchar*); + +WEBKIT_API void webkit_web_inspector_execute_script(WebKitWebInspector*, long callId, const gchar* script); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp new file mode 100644 index 0000000..9f13f28 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp @@ -0,0 +1,381 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebnavigationaction.h" + +#include "FrameLoaderTypes.h" +#include "webkitenumtypes.h" +#include "webkitglobalsprivate.h" +#include <glib/gi18n-lib.h> +#include <string.h> +#include <wtf/Assertions.h> + +static void webkit_web_navigation_action_set_target_frame(WebKitWebNavigationAction* navigationAction, const gchar* targetFrame); + +/** + * SECTION:webkitwebnavigationaction + * @short_description: Object used to report details of navigation actions + * + * #WebKitWebNavigationAction is used in signals to provide details about + * what led the navigation to happen. This includes, for instance, if the user + * clicked a link to start that navigation, and what mouse button was used. + */ + +struct _WebKitWebNavigationActionPrivate { + WebKitWebNavigationReason reason; + gchar* originalUri; + gint button; + gint modifier_state; + gchar* targetFrame; +}; + +enum { + PROP_0, + + PROP_REASON, + PROP_ORIGINAL_URI, + PROP_BUTTON, + PROP_MODIFIER_STATE, + PROP_TARGET_FRAME +}; + +G_DEFINE_TYPE(WebKitWebNavigationAction, webkit_web_navigation_action, G_TYPE_OBJECT) + + +static void webkit_web_navigation_action_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec) +{ + WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(object); + + switch(propertyId) { + case PROP_REASON: + g_value_set_enum(value, webkit_web_navigation_action_get_reason(navigationAction)); + break; + case PROP_ORIGINAL_URI: + g_value_set_string(value, webkit_web_navigation_action_get_original_uri(navigationAction)); + break; + case PROP_BUTTON: + g_value_set_int(value, webkit_web_navigation_action_get_button(navigationAction)); + break; + case PROP_MODIFIER_STATE: + g_value_set_int(value, webkit_web_navigation_action_get_modifier_state(navigationAction)); + break; + case PROP_TARGET_FRAME: + g_value_set_string(value, webkit_web_navigation_action_get_target_frame(navigationAction)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); + break; + } +} + +static void webkit_web_navigation_action_set_property(GObject* object, guint propertyId, const GValue* value, GParamSpec* pspec) +{ + WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(object); + WebKitWebNavigationActionPrivate* priv = navigationAction->priv; + + switch(propertyId) { + case PROP_REASON: + webkit_web_navigation_action_set_reason(navigationAction, (WebKitWebNavigationReason)g_value_get_enum(value)); + break; + case PROP_ORIGINAL_URI: + webkit_web_navigation_action_set_original_uri(navigationAction, g_value_get_string(value)); + break; + case PROP_BUTTON: + priv->button = g_value_get_int(value); + break; + case PROP_MODIFIER_STATE: + priv->modifier_state = g_value_get_int(value); + break; + case PROP_TARGET_FRAME: + webkit_web_navigation_action_set_target_frame(navigationAction, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec); + break; + } +} + +static void webkit_web_navigation_action_init(WebKitWebNavigationAction* navigationAction) +{ + navigationAction->priv = G_TYPE_INSTANCE_GET_PRIVATE(navigationAction, WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionPrivate); +} + +static void webkit_web_navigation_action_finalize(GObject* obj) +{ + WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(obj); + WebKitWebNavigationActionPrivate* priv = navigationAction->priv; + + g_free(priv->originalUri); + + G_OBJECT_CLASS(webkit_web_navigation_action_parent_class)->finalize(obj); +} + +static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionClass* requestClass) +{ + GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); + + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) == static_cast<int>(WebCore::NavigationTypeLinkClicked), navigation_type_link_clicked_enum_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED) == static_cast<int>(WebCore::NavigationTypeFormSubmitted), navigation_type_form_submitted_enum_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD) == static_cast<int>(WebCore::NavigationTypeBackForward), navigation_type_back_forward_enum_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_RELOAD) == static_cast<int>(WebCore::NavigationTypeReload), navigation_type_reload_enum_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED) == static_cast<int>(WebCore::NavigationTypeFormResubmitted), navigation_type_form_resubmitted_enum_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_OTHER) == static_cast<int>(WebCore::NavigationTypeOther), navigation_type_other_enum_match); + + objectClass->get_property = webkit_web_navigation_action_get_property; + objectClass->set_property = webkit_web_navigation_action_set_property; + objectClass->dispose = webkit_web_navigation_action_finalize; + + /** + * WebKitWebNavigationAction:reason: + * + * The reason why this navigation is occuring. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_REASON, + g_param_spec_enum("reason", + _("Reason"), + _("The reason why this navigation is occurring"), + WEBKIT_TYPE_WEB_NAVIGATION_REASON, + WEBKIT_WEB_NAVIGATION_REASON_OTHER, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT))); + + /** + * WebKitWebNavigationAction:original-uri: + * + * The URI that was requested as the target for the navigation. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_ORIGINAL_URI, + g_param_spec_string("original-uri", + _("Original URI"), + _("The URI that was requested as the target for the navigation"), + "", + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT))); + /** + * WebKitWebNavigationAction:button: + * + * The GTK+ identifier for the mouse button used to click. Notice that GTK+ button values + * are 1, 2 and 3 for left, middle and right buttons, so they are DOM button values +1. If the action was not + * initiated by a mouse click the value will be -1. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_BUTTON, + g_param_spec_int("button", + _("Button"), + _("The button used to click"), + -1, + G_MAXINT, + -1, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitWebNavigationAction:modifier-state: + * + * The state of the modifier keys when the action was requested. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_MODIFIER_STATE, + g_param_spec_int("modifier-state", + _("Modifier state"), + _("A bitmask representing the state of the modifier keys"), + 0, + G_MAXINT, + 0, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + /** + * WebKitWebNavigationAction:target-frame: + * + * The target frame for the navigation. + * + * Since: 1.1.13 + */ + g_object_class_install_property(objectClass, PROP_TARGET_FRAME, + g_param_spec_string("target-frame", + _("Target frame"), + _("The target frame for the navigation"), + NULL, + (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); + + + + g_type_class_add_private(requestClass, sizeof(WebKitWebNavigationActionPrivate)); +} + +/** + * webkit_web_navigation_action_get_reason: + * @navigationAction: a #WebKitWebNavigationAction + * + * Returns the reason why WebKit is requesting a navigation. + * + * Return value: a #WebKitWebNavigationReason + * + * Since: 1.0.3 + */ +WebKitWebNavigationReason webkit_web_navigation_action_get_reason(WebKitWebNavigationAction* navigationAction) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), WEBKIT_WEB_NAVIGATION_REASON_OTHER); + + return navigationAction->priv->reason; +} + +/** + * webkit_web_navigation_action_set_reason: + * @navigationAction: a #WebKitWebNavigationAction + * @reason: a #WebKitWebNavigationReason + * + * Sets the reason why WebKit is requesting a navigation. + * + * Since: 1.0.3 + */ +void webkit_web_navigation_action_set_reason(WebKitWebNavigationAction* navigationAction, WebKitWebNavigationReason reason) +{ + g_return_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction)); + + if (navigationAction->priv->reason == reason) + return; + + navigationAction->priv->reason = reason; + g_object_notify(G_OBJECT(navigationAction), "reason"); +} + +/** + * webkit_web_navigation_action_get_original_uri: + * @navigationAction: a #WebKitWebNavigationAction + * + * Returns the URI that was originally requested. This may differ from the + * navigation target, for instance because of a redirect. + * + * Return value: the originally requested URI + * + * Since: 1.0.3 + */ +const gchar* webkit_web_navigation_action_get_original_uri(WebKitWebNavigationAction* navigationAction) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), NULL); + + return navigationAction->priv->originalUri; +} + +/** + * webkit_web_navigation_action_set_original_uri: + * @navigationAction: a #WebKitWebNavigationAction + * @originalUri: a URI + * + * Sets the URI that was originally requested. This may differ from the + * navigation target, for instance because of a redirect. + * + * Since: 1.0.3 + */ +void webkit_web_navigation_action_set_original_uri(WebKitWebNavigationAction* navigationAction, const gchar* originalUri) +{ + g_return_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction)); + g_return_if_fail(originalUri); + + if (navigationAction->priv->originalUri && + (!strcmp(navigationAction->priv->originalUri, originalUri))) + return; + + g_free(navigationAction->priv->originalUri); + navigationAction->priv->originalUri = g_strdup(originalUri); + g_object_notify(G_OBJECT(navigationAction), "original-uri"); +} + +/** + * webkit_web_navigation_action_get_button: + * @navigationAction: a #WebKitWebNavigationAction + * + * The GTK+ identifier for the mouse button used to click. Notice that GTK+ button values + * are 1, 2 and 3 for left, middle and right buttons, so they are DOM button values +1. If the action was not + * initiated by a mouse click the value will be -1. + * + * Return value: the mouse button used to click + * + * Since: 1.0.3 + */ +gint webkit_web_navigation_action_get_button(WebKitWebNavigationAction* navigationAction) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), -1); + + return navigationAction->priv->button; +} + +/** + * webkit_web_navigation_action_get_modifier_state: + * @navigationAction: a #WebKitWebNavigationAction + * + * Returns a bitmask with the the state of the modifier keys. + * + * Return value: a bitmask with the state of the modifier keys + * + * Since: 1.0.3 + */ +gint webkit_web_navigation_action_get_modifier_state(WebKitWebNavigationAction* navigationAction) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), 0); + + return navigationAction->priv->modifier_state; +} + +/** + * webkit_web_navigation_action_get_target_frame: + * @navigationAction: a #WebKitWebNavigationAction + * + * Returns the target frame of the action. + * + * Return value: the target frame of the action or NULL + * if there is no target. + * + * Since: 1.1.13 + */ +G_CONST_RETURN gchar* webkit_web_navigation_action_get_target_frame(WebKitWebNavigationAction* navigationAction) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), NULL); + + return navigationAction->priv->targetFrame; +} + +static void webkit_web_navigation_action_set_target_frame(WebKitWebNavigationAction* navigationAction, const gchar* targetFrame) +{ + if (!g_strcmp0(navigationAction->priv->targetFrame, targetFrame)) + return; + + g_free(navigationAction->priv->targetFrame); + navigationAction->priv->targetFrame = g_strdup(targetFrame); + g_object_notify(G_OBJECT(navigationAction), "target-frame"); +} + +namespace WebKit { + +WebKitWebNavigationReason kit(WebCore::NavigationType type) +{ + return (WebKitWebNavigationReason)type; +} + +WebCore::NavigationType core(WebKitWebNavigationReason type) +{ + return static_cast<WebCore::NavigationType>(type); +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h new file mode 100644 index 0000000..dbb47a8 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebnavigationaction_h +#define webkitwebnavigationaction_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +/* + * The order of this enum must be the same as NavigationType in + * FrameLoaderTypes.h + */ +typedef enum { + WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED, + WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED, + WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD, + WEBKIT_WEB_NAVIGATION_REASON_RELOAD, + WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED, + WEBKIT_WEB_NAVIGATION_REASON_OTHER, +} WebKitWebNavigationReason; + +#define WEBKIT_TYPE_WEB_NAVIGATION_ACTION (webkit_web_navigation_action_get_type()) +#define WEBKIT_WEB_NAVIGATION_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationAction)) +#define WEBKIT_WEB_NAVIGATION_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionClass)) +#define WEBKIT_IS_WEB_NAVIGATION_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION)) +#define WEBKIT_IS_WEB_NAVIGATION_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_NAVIGATION_ACTION)) +#define WEBKIT_WEB_NAVIGATION_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionClass)) + +typedef struct _WebKitWebNavigationAction WebKitWebNavigationAction; +typedef struct _WebKitWebNavigationActionClass WebKitWebNavigationActionClass; +typedef struct _WebKitWebNavigationActionPrivate WebKitWebNavigationActionPrivate; + +struct _WebKitWebNavigationAction { + GObject parent_instance; + + /*< private >*/ + WebKitWebNavigationActionPrivate* priv; +}; + +struct _WebKitWebNavigationActionClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_navigation_action_get_type(void); + +WEBKIT_API WebKitWebNavigationReason +webkit_web_navigation_action_get_reason(WebKitWebNavigationAction* navigationAction); + +WEBKIT_API void +webkit_web_navigation_action_set_reason(WebKitWebNavigationAction* navigationAction, WebKitWebNavigationReason reason); + +WEBKIT_API const gchar* +webkit_web_navigation_action_get_original_uri(WebKitWebNavigationAction* navigationAction); + +WEBKIT_API void +webkit_web_navigation_action_set_original_uri(WebKitWebNavigationAction* navigationAction, const gchar* originalUri); + +WEBKIT_API gint +webkit_web_navigation_action_get_button(WebKitWebNavigationAction* navigationAction); + +WEBKIT_API gint +webkit_web_navigation_action_get_modifier_state(WebKitWebNavigationAction* navigationAction); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_navigation_action_get_target_frame(WebKitWebNavigationAction* navigationAction); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h b/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h new file mode 100644 index 0000000..a8bc5ca --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebnavigationactionprivate_h +#define webkitnavigationactionprivate_h + +#include <webkit/webkitwebnavigationaction.h> + +namespace WebKit { + +WebKitWebNavigationReason kit(WebCore::NavigationType); +WebCore::NavigationType core(WebKitWebNavigationReason); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebplugin.cpp b/Source/WebKit/gtk/webkit/webkitwebplugin.cpp new file mode 100644 index 0000000..52d5965 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebplugin.cpp @@ -0,0 +1,251 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "webkitwebplugin.h" + +#include "PluginPackage.h" +#include "webkitglobalsprivate.h" +#include "webkitwebpluginprivate.h" +#include <glib/gi18n-lib.h> + +/** + * SECTION:webkitwebplugin + * @short_description: Represents a plugin, enabling fine-grained control + * @see_also: #WebKitWebPluginDatabase + * + * This object represents a single plugin, found by WebKitGTK+ while + * scanning the various usual directories. This object can be used to + * get more information about a plugin, and enable/disable it, + * allowing fine-grained control of plugins. The list of available + * plugins can be obtained from the #WebKitWebPluginDatabase object. + */ + +using namespace WebCore; + +enum { + PROP_0, + + PROP_ENABLED +}; + +G_DEFINE_TYPE(WebKitWebPlugin, webkit_web_plugin, G_TYPE_OBJECT) + +static void freeMIMEType(WebKitWebPluginMIMEType* mimeType) +{ + if (mimeType->name) + g_free(mimeType->name); + if (mimeType->description) + g_free(mimeType->description); + if (mimeType->extensions) + g_strfreev(mimeType->extensions); + g_slice_free(WebKitWebPluginMIMEType, mimeType); +} + +static void webkit_web_plugin_finalize(GObject* object) +{ + WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object); + WebKitWebPluginPrivate* priv = plugin->priv; + + g_slist_foreach(priv->mimeTypes, (GFunc)freeMIMEType, 0); + g_slist_free(priv->mimeTypes); + + delete plugin->priv; + + G_OBJECT_CLASS(webkit_web_plugin_parent_class)->finalize(object); +} + +static void webkit_web_plugin_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* paramSpec) +{ + WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object); + + switch (prop_id) { + case PROP_ENABLED: + g_value_set_boolean(value, webkit_web_plugin_get_enabled(plugin)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, paramSpec); + } +} + +static void webkit_web_plugin_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* paramSpec) +{ + WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object); + + switch (prop_id) { + case PROP_ENABLED: + webkit_web_plugin_set_enabled(plugin, g_value_get_boolean(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, paramSpec); + } +} + +static void webkit_web_plugin_class_init(WebKitWebPluginClass* klass) +{ + webkitInit(); + + GObjectClass* gobjectClass = reinterpret_cast<GObjectClass*>(klass); + + gobjectClass->finalize = webkit_web_plugin_finalize; + gobjectClass->get_property = webkit_web_plugin_get_property; + gobjectClass->set_property = webkit_web_plugin_set_property; + + g_object_class_install_property(gobjectClass, + PROP_ENABLED, + g_param_spec_boolean("enabled", + _("Enabled"), + _("Whether the plugin is enabled"), + FALSE, + WEBKIT_PARAM_READWRITE)); +} + +static void webkit_web_plugin_init(WebKitWebPlugin *plugin) +{ + plugin->priv = new WebKitWebPluginPrivate(); + plugin->priv->mimeTypes = 0; +} + +namespace WebKit { +WebKitWebPlugin* kitNew(WebCore::PluginPackage* package) +{ + WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(g_object_new(WEBKIT_TYPE_WEB_PLUGIN, 0)); + + plugin->priv->corePlugin = package; + + return plugin; +} +} + +/** + * webkit_web_plugin_get_name: + * @plugin: a #WebKitWebPlugin + * + * Returns: the name string for @plugin. + * + * Since: 1.3.8 + */ +const char* webkit_web_plugin_get_name(WebKitWebPlugin* plugin) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0); + + WebKitWebPluginPrivate* priv = plugin->priv; + + if (!priv->name.length()) + priv->name = priv->corePlugin->name().utf8(); + + return priv->name.data(); +} + +/** + * webkit_web_plugin_get_description: + * @plugin: a #WebKitWebPlugin + * + * Returns: the description string for @plugin. + * + * Since: 1.3.8 + */ +const char* webkit_web_plugin_get_description(WebKitWebPlugin* plugin) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0); + + WebKitWebPluginPrivate* priv = plugin->priv; + + if (!priv->description.length()) + priv->description = priv->corePlugin->description().utf8(); + + return priv->description.data(); +} + +/** + * webkit_web_plugin_get_mimetypes: + * @plugin: a #WebKitWebPlugin + * + * Returns all the #WebKitWebPluginMIMEType that @plugin is handling + * at the moment. + * + * Returns: (transfer none) (element-type WebKitWebPluginMIMEType): a #GSList of #WebKitWebPluginMIMEType + * + * Since: 1.3.8 + */ +GSList* webkit_web_plugin_get_mimetypes(WebKitWebPlugin* plugin) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0); + + WebKitWebPluginPrivate* priv = plugin->priv; + + if (priv->mimeTypes) + return priv->mimeTypes; + + const MIMEToDescriptionsMap& mimeToDescriptions = priv->corePlugin->mimeToDescriptions(); + MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end(); + + for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) { + WebKitWebPluginMIMEType* mimeType = g_slice_new0(WebKitWebPluginMIMEType); + mimeType->name = g_strdup(it->first.utf8().data()); + mimeType->description = g_strdup(it->second.utf8().data()); + + Vector<String> extensions = priv->corePlugin->mimeToExtensions().get(it->first); + mimeType->extensions = static_cast<gchar**>(g_malloc0(extensions.size() + 1)); + for (unsigned i = 0; i < extensions.size(); i++) + mimeType->extensions[i] = g_strdup(extensions[i].utf8().data()); + + priv->mimeTypes = g_slist_append(priv->mimeTypes, mimeType); + } + + return priv->mimeTypes; +} + +/** + * webkit_web_plugin_set_enabled: + * @plugin: a #WebKitWebPlugin + * @enabled: whether to enable the plugin + * + * Sets the enabled status of the @plugin. + * + * Since: 1.3.8 + */ +void webkit_web_plugin_set_enabled(WebKitWebPlugin* plugin, gboolean enabled) +{ + g_return_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin)); + WebKitWebPluginPrivate* priv = plugin->priv; + + ASSERT(priv->corePlugin); + if (priv->corePlugin->isEnabled() == enabled) + return; + + priv->corePlugin->setEnabled(enabled); + + g_object_notify(G_OBJECT(plugin), "enabled"); +} + +/** + * webkit_web_plugin_get_enabled: + * @plugin: a #WebKitWebPlugin + * + * Returns: %TRUE if the plugin is enabled, %FALSE otherwise + * + * Since: 1.3.8 + */ +gboolean webkit_web_plugin_get_enabled(WebKitWebPlugin* plugin) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), FALSE); + + ASSERT(plugin->priv->corePlugin); + return plugin->priv->corePlugin->isEnabled(); +} diff --git a/Source/WebKit/gtk/webkit/webkitwebplugin.h b/Source/WebKit/gtk/webkit/webkitwebplugin.h new file mode 100644 index 0000000..3514d1e --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebplugin.h @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef webkitwebplugin_h +#define webkitwebplugin_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_PLUGIN (webkit_web_plugin_get_type()) +#define WEBKIT_WEB_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPlugin)) +#define WEBKIT_WEB_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPluginClass)) +#define WEBKIT_IS_WEB_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_PLUGIN)) +#define WEBKIT_IS_WEB_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_PLUGIN)) +#define WEBKIT_WEB_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPluginClass)) + +typedef struct _WebKitWebPluginPrivate WebKitWebPluginPrivate; + +/** + * WebKitWebPluginMIMEType: + * @name: the name of the MIME type. + * @description: the description of the MIME type. + * @extensions: a %NULL-terminated array with the extensions + * associated with this MIME type. + * + * A structure representing one of the MIME types associated with a + * plugin. A #GSList of these objects will be returned by + * #webkit_web_plugin_get_mimetypes, use + * #webkit_web_plugin_mime_type_list_free to free it. + * + * Since: 1.3.8 + */ +typedef struct _WebKitWebPluginMIMEType { + char* name; + char* description; + char** extensions; +} WebKitWebPluginMIMEType; + +struct _WebKitWebPluginClass { + GObjectClass parentClass; +}; + +struct _WebKitWebPlugin { + GObject parentInstance; + + WebKitWebPluginPrivate* priv; +}; + +WEBKIT_API GType +webkit_web_plugin_get_type (void) G_GNUC_CONST; + +WEBKIT_API const char* +webkit_web_plugin_get_name (WebKitWebPlugin*); + +WEBKIT_API const char* +webkit_web_plugin_get_description (WebKitWebPlugin*); + +WEBKIT_API GSList* +webkit_web_plugin_get_mimetypes (WebKitWebPlugin*); + +WEBKIT_API void +webkit_web_plugin_set_enabled (WebKitWebPlugin*, gboolean); + +WEBKIT_API gboolean +webkit_web_plugin_get_enabled (WebKitWebPlugin*); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp new file mode 100644 index 0000000..2d36115 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "webkitwebplugindatabase.h" + +#include "PluginDatabase.h" +#include "webkitglobalsprivate.h" +#include "webkitwebplugindatabaseprivate.h" +#include "webkitwebpluginprivate.h" + +/** + * SECTION:webkitwebplugindatabase + * @short_description: Provides information about the plugins the engine knows about + * @see_also: #WebKitWebPlugin + * + * This object allows you to query information about the plugins found + * by the engine while scanning the usual directories. You can then + * use the #WebKitWebPlugin objects to get more information or + * enable/disable individual plugins. + */ + +using namespace WebKit; +using namespace WebCore; + +G_DEFINE_TYPE(WebKitWebPluginDatabase, webkit_web_plugin_database, G_TYPE_OBJECT) + +static void webkit_web_plugin_database_dispose(GObject* object) +{ + G_OBJECT_CLASS(webkit_web_plugin_database_parent_class)->dispose(object); +} + +static void webkit_web_plugin_database_class_init(WebKitWebPluginDatabaseClass* klass) +{ + webkitInit(); + + GObjectClass* gobjectClass = reinterpret_cast<GObjectClass*>(klass); + + gobjectClass->dispose = webkit_web_plugin_database_dispose; + + g_type_class_add_private(klass, sizeof(WebKitWebPluginDatabasePrivate)); +} + +static void webkit_web_plugin_database_init(WebKitWebPluginDatabase* database) +{ + WebKitWebPluginDatabasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(database, WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabasePrivate); + database->priv = priv; + + priv->coreDatabase = PluginDatabase::installedPlugins(); +} + +/** + * webkit_web_plugin_database_list_free: + * @list: a #WebKitWebPluginDatabasePluginList + * + * Frees @list. + * + * Since: 1.3.8 + */ +void webkit_web_plugin_database_plugins_list_free(GSList* list) +{ + g_return_if_fail(list); + + for (GSList* p = list; p; p = p->next) + g_object_unref(p->data); + + g_slist_free(list); +} + +/** + * webkit_web_plugin_database_get_plugins: + * @database: a #WebKitWebPluginDatabase + * + * Returns all #WebKitWebPlugin available in @database. + * The returned list must be freed with webkit_web_plugin_database_plugins_list_free() + * + * Returns: (transfer full) (element-type WebKitWebPlugin): a #GSList of #WebKitWebPlugin + * + * Since: 1.3.8 + */ +GSList* webkit_web_plugin_database_get_plugins(WebKitWebPluginDatabase* database) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0); + + GSList* gPlugins = 0; + const Vector<PluginPackage*>& plugins = database->priv->coreDatabase->plugins(); + + for (unsigned int i = 0; i < plugins.size(); ++i) { + PluginPackage* plugin = plugins[i]; + gPlugins = g_slist_append(gPlugins, kitNew(plugin)); + } + + return gPlugins; +} + +/** + * webkit_web_plugin_database_get_plugin_for_mimetype: + * @database: a #WebKitWebPluginDatabase + * @mimeType: a mime type + * + * Returns the #WebKitWebPlugin that is handling @mimeType in the + * @database, or %NULL if there's none doing so. + * + * Returns: (transfer full): a #WebKitWebPlugin + * + * Since: 1.3.8 + */ +WebKitWebPlugin* webkit_web_plugin_database_get_plugin_for_mimetype(WebKitWebPluginDatabase* database, const char* mimeType) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0); + g_return_val_if_fail(mimeType, 0); + + return kitNew(database->priv->coreDatabase->pluginForMIMEType(mimeType)); +} + +/** + * webkit_web_plugin_database_refresh: + * @database: a #WebKitWebPluginDatabase + * + * Refreshes @database adding new plugins that are now in use and + * removing those that have been disabled or are otherwise no longer + * available. + * + * Since: 1.3.8 + */ +void webkit_web_plugin_database_refresh(WebKitWebPluginDatabase* database) +{ + g_return_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database)); + + database->priv->coreDatabase->refresh(); +} + +WebKitWebPluginDatabase* webkit_web_plugin_database_new(void) +{ + return WEBKIT_WEB_PLUGIN_DATABASE(g_object_new(WEBKIT_TYPE_WEB_PLUGIN_DATABASE, 0)); +} diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h new file mode 100644 index 0000000..0b02c26 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef webkitwebplugindatabase_h +#define webkitwebplugindatabase_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_PLUGIN_DATABASE (webkit_web_plugin_database_get_type()) +#define WEBKIT_WEB_PLUGIN_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabase)) +#define WEBKIT_WEB_PLUGIN_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabaseClass)) +#define WEBKIT_IS_WEB_PLUGIN_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE)) +#define WEBKIT_IS_WEB_PLUGIN_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_PLUGIN_DATABASE)) +#define WEBKIT_WEB_PLUGIN_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabaseClass)) + +typedef struct _WebKitWebPluginDatabasePrivate WebKitWebPluginDatabasePrivate; + +struct _WebKitWebPluginDatabaseClass { + GObjectClass parentClass; +}; + +struct _WebKitWebPluginDatabase { + GObject parentInstance; + + WebKitWebPluginDatabasePrivate* priv; +}; + +WEBKIT_API GType +webkit_web_plugin_database_get_type (void) G_GNUC_CONST; + +WEBKIT_API void +webkit_web_plugin_database_plugins_list_free (GSList*); + +WEBKIT_API GSList* +webkit_web_plugin_database_get_plugins (WebKitWebPluginDatabase*); + +WEBKIT_API WebKitWebPlugin* +webkit_web_plugin_database_get_plugin_for_mimetype (WebKitWebPluginDatabase*, const char *); + +WEBKIT_API void +webkit_web_plugin_database_refresh (WebKitWebPluginDatabase*); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h b/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h new file mode 100644 index 0000000..199aede --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebplugindatabaseprivate_h +#define webkitwebplugindatabaseprivate_h + +#include <glib-object.h> + +namespace WebCore { +class PluginDatabase; +} + +extern "C" { + +typedef struct _WebKitWebPluginDatabasePrivate WebKitWebPluginDatabasePrivate; +struct _WebKitWebPluginDatabasePrivate { + WebCore::PluginDatabase* coreDatabase; +}; + +WebKitWebPluginDatabase* webkit_web_plugin_database_new(); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h b/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h new file mode 100644 index 0000000..4ae204b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef webkitwebpluginprivate_h +#define webkitwebpluginprivate_h + +#include "webkitwebplugin.h" +#include <glib-object.h> +#include <wtf/text/CString.h> + +namespace WebCore { +class PluginPackage; +} + +namespace WebKit { +WebKitWebPlugin* kitNew(WebCore::PluginPackage* package); +} + +extern "C" { + +typedef struct _WebKitWebPluginPrivate WebKitWebPluginPrivate; +struct _WebKitWebPluginPrivate { + RefPtr<WebCore::PluginPackage> corePlugin; + CString name; + CString description; + GSList* mimeTypes; +}; + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp new file mode 100644 index 0000000..624ff9a --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebpolicydecision.h" + +#include "FrameLoaderClient.h" +#include "FrameLoaderTypes.h" +#include "webkitwebframeprivate.h" +#include "webkitwebpolicydecisionprivate.h" + +using namespace WebKit; +using namespace WebCore; + +/** + * SECTION:webkitwebpolicydecision + * @short_description: Liason between WebKit and the application regarding asynchronous policy decisions + * + * #WebKitWebPolicyDecision objects are given to the application on + * signal emissions that deal with policy decisions, such as if a new + * window should be opened, or if a given navigation should be + * allowed. The application uses it to tell the engine what to do. + */ + +G_DEFINE_TYPE(WebKitWebPolicyDecision, webkit_web_policy_decision, G_TYPE_OBJECT); + +struct _WebKitWebPolicyDecisionPrivate { + WebKitWebFrame* frame; + FramePolicyFunction framePolicyFunction; + gboolean isCancelled; +}; + +static void webkit_web_policy_decision_class_init(WebKitWebPolicyDecisionClass* decisionClass) +{ + g_type_class_add_private(decisionClass, sizeof(WebKitWebPolicyDecisionPrivate)); +} + +static void webkit_web_policy_decision_init(WebKitWebPolicyDecision* decision) +{ + decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionPrivate); +} + +WebKitWebPolicyDecision* webkit_web_policy_decision_new(WebKitWebFrame* frame, WebCore::FramePolicyFunction function) +{ + g_return_val_if_fail(frame, NULL); + + WebKitWebPolicyDecision* decision = WEBKIT_WEB_POLICY_DECISION(g_object_new(WEBKIT_TYPE_WEB_POLICY_DECISION, NULL)); + WebKitWebPolicyDecisionPrivate* priv = decision->priv; + + priv->frame = frame; + priv->framePolicyFunction = function; + priv->isCancelled = FALSE; + + return decision; +} + +/** + * webkit_web_policy_decision_use + * @decision: a #WebKitWebPolicyDecision + * + * Will send the USE decision to the policy implementer. + * + * Since: 1.0.3 + */ +void webkit_web_policy_decision_use(WebKitWebPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision)); + + WebKitWebPolicyDecisionPrivate* priv = decision->priv; + + if (!priv->isCancelled) + (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyUse); +} + +/** + * webkit_web_policy_decision_ignore + * @decision: a #WebKitWebPolicyDecision + * + * Will send the IGNORE decision to the policy implementer. + * + * Since: 1.0.3 + */ +void webkit_web_policy_decision_ignore(WebKitWebPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision)); + + WebKitWebPolicyDecisionPrivate* priv = decision->priv; + + if (!priv->isCancelled) + (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyIgnore); +} + +/** + * webkit_web_policy_decision_download + * @decision: a #WebKitWebPolicyDecision + * + * Will send the DOWNLOAD decision to the policy implementer. + * + * Since: 1.0.3 + */ +void webkit_web_policy_decision_download(WebKitWebPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision)); + + WebKitWebPolicyDecisionPrivate* priv = decision->priv; + + if (!priv->isCancelled) + (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyDownload); +} + +void webkit_web_policy_decision_cancel(WebKitWebPolicyDecision* decision) +{ + g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision)); + + WebKitWebPolicyDecisionPrivate* priv = decision->priv; + + priv->isCancelled = TRUE; +} diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h new file mode 100644 index 0000000..2b61837 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebpolicydecision_h +#define webkitwebpolicydecision_h + +#include <glib-object.h> +#include <stdint.h> +#include "webkitdefines.h" + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_POLICY_DECISION (webkit_web_policy_decision_get_type()) +#define WEBKIT_WEB_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecision)) +#define WEBKIT_WEB_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionClass)) +#define WEBKIT_IS_WEB_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_POLICY_DECISION)) +#define WEBKIT_IS_WEB_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_POLICY_DECISION)) +#define WEBKIT_WEB_POLICY_DECISION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionClass)) + +typedef struct _WebKitWebPolicyDecisionPrivate WebKitWebPolicyDecisionPrivate; +struct _WebKitWebPolicyDecision { + GObject parent_instance; + + /*< private >*/ + WebKitWebPolicyDecisionPrivate* priv; +}; + +struct _WebKitWebPolicyDecisionClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_policy_decision_get_type (void); + +WEBKIT_API void +webkit_web_policy_decision_use (WebKitWebPolicyDecision* decision); + +WEBKIT_API void +webkit_web_policy_decision_ignore (WebKitWebPolicyDecision* decision); + +WEBKIT_API void +webkit_web_policy_decision_download (WebKitWebPolicyDecision* decision); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h b/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h new file mode 100644 index 0000000..2d264ab --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebpolicydecisionprivate_h +#define webkitwebpolicydecisionprivate_h + +#include "webkitwebpolicydecision.h" + +extern "C" { + +WebKitWebPolicyDecision* webkit_web_policy_decision_new(WebKitWebFrame*, WebCore::FramePolicyFunction); + +void webkit_web_policy_decision_cancel(WebKitWebPolicyDecision*); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebresource.cpp b/Source/WebKit/gtk/webkit/webkitwebresource.cpp new file mode 100644 index 0000000..b7f4036 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebresource.cpp @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2009 Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebresource.h" + +#include "ArchiveResource.h" +#include "KURL.h" +#include "PlatformString.h" +#include "SharedBuffer.h" +#include "webkitenumtypes.h" +#include "webkitglobalsprivate.h" +#include "webkitmarshal.h" +#include "webkitwebresourceprivate.h" +#include <glib.h> +#include <glib/gi18n-lib.h> +#include <wtf/Assertions.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitwebresource + * @short_description: Represents a downloaded URI. + * @see_also: #WebKitWebDataSource + * + * A web resource encapsulates the data of the download as well as the URI, + * MIME type and frame name of the resource. + */ + +using namespace WebCore; + +enum { + PROP_0, + + PROP_URI, + PROP_MIME_TYPE, + PROP_ENCODING, + PROP_FRAME_NAME +}; + +G_DEFINE_TYPE(WebKitWebResource, webkit_web_resource, G_TYPE_OBJECT); + +static void webkit_web_resource_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); +static void webkit_web_resource_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_resource_cleanup(WebKitWebResource* webResource) +{ + WebKitWebResourcePrivate* priv = webResource->priv; + + g_free(priv->uri); + priv->uri = NULL; + + g_free(priv->mimeType); + priv->mimeType = NULL; + + g_free(priv->textEncoding); + priv->textEncoding = NULL; + + g_free(priv->frameName); + priv->frameName = NULL; + + if (priv->data) + g_string_free(priv->data, TRUE); + priv->data = NULL; +} + +static void webkit_web_resource_dispose(GObject* object) +{ + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object); + WebKitWebResourcePrivate* priv = webResource->priv; + + if (priv->resource) { + priv->resource->deref(); + priv->resource = 0; + } + + G_OBJECT_CLASS(webkit_web_resource_parent_class)->dispose(object); +} + +static void webkit_web_resource_finalize(GObject* object) +{ + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object); + + webkit_web_resource_cleanup(webResource); + + G_OBJECT_CLASS(webkit_web_resource_parent_class)->finalize(object); +} + +static void webkit_web_resource_class_init(WebKitWebResourceClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + + gobject_class->dispose = webkit_web_resource_dispose; + gobject_class->finalize = webkit_web_resource_finalize; + gobject_class->get_property = webkit_web_resource_get_property; + gobject_class->set_property = webkit_web_resource_set_property; + + /** + * WebKitWebResource:uri: + * + * The URI of the web resource + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobject_class, + PROP_URI, + g_param_spec_string( + "uri", + _("URI"), + _("The uri of the resource"), + NULL, + (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); + /** + * WebKitWebResource:mime-type: + * + * The MIME type of the web resource. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobject_class, + PROP_MIME_TYPE, + g_param_spec_string( + "mime-type", + _("MIME Type"), + _("The MIME type of the resource"), + NULL, + WEBKIT_PARAM_READABLE)); + /** + * WebKitWebResource:encoding: + * + * The encoding name to which the web resource was encoded in. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobject_class, + PROP_ENCODING, + g_param_spec_string( + "encoding", + _("Encoding"), + _("The text encoding name of the resource"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebResource:frame-name: + * + * The frame name for the web resource. + * + * Since: 1.1.14 + */ + g_object_class_install_property(gobject_class, + PROP_FRAME_NAME, + g_param_spec_string( + "frame-name", + _("Frame Name"), + _("The frame name of the resource"), + NULL, + WEBKIT_PARAM_READABLE)); + + g_type_class_add_private(gobject_class, sizeof(WebKitWebResourcePrivate)); +} + +static void webkit_web_resource_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object); + + switch (prop_id) { + case PROP_URI: + g_value_set_string(value, webkit_web_resource_get_uri(webResource)); + break; + case PROP_MIME_TYPE: + g_value_set_string(value, webkit_web_resource_get_mime_type(webResource)); + break; + case PROP_ENCODING: + g_value_set_string(value, webkit_web_resource_get_encoding(webResource)); + break; + case PROP_FRAME_NAME: + g_value_set_string(value, webkit_web_resource_get_frame_name(webResource)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_resource_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object); + + switch (prop_id) { + case PROP_URI: + g_free(webResource->priv->uri); + webResource->priv->uri = g_value_dup_string(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_resource_init(WebKitWebResource* webResource) +{ + webResource->priv = G_TYPE_INSTANCE_GET_PRIVATE(webResource, WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourcePrivate); +} + +// internal use only +WebKitWebResource* webkit_web_resource_new_with_core_resource(PassRefPtr<ArchiveResource> resource) +{ + WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(g_object_new(WEBKIT_TYPE_WEB_RESOURCE, NULL)); + WebKitWebResourcePrivate* priv = webResource->priv; + priv->resource = resource.releaseRef(); + + return webResource; +} + +void webkit_web_resource_init_with_core_resource(WebKitWebResource* webResource, PassRefPtr<ArchiveResource> resource) +{ + ASSERT(resource); + + WebKitWebResourcePrivate* priv = webResource->priv; + + if (priv->resource) + priv->resource->deref(); + + priv->resource = resource.releaseRef(); +} + +/** + * webkit_web_resource_new: + * @data: the data to initialize the #WebKitWebResource + * @size: the length of @data + * @uri: the uri of the #WebKitWebResource + * @mime_type: the MIME type of the #WebKitWebResource + * @encoding: the text encoding name of the #WebKitWebResource + * @frame_name: the frame name of the #WebKitWebResource + * + * Returns a new #WebKitWebResource. The @encoding can be %NULL. The + * @frame_name argument can be used if the resource represents contents of an + * entire HTML frame, otherwise pass %NULL. + * + * Return value: a new #WebKitWebResource + * + * Since: 1.1.14 + */ +WebKitWebResource* webkit_web_resource_new(const gchar* data, + gssize size, + const gchar* uri, + const gchar* mimeType, + const gchar* encoding, + const gchar* frameName) +{ + g_return_val_if_fail(data, NULL); + g_return_val_if_fail(uri, NULL); + g_return_val_if_fail(mimeType, NULL); + + if (size < 0) + size = strlen(data); + + RefPtr<SharedBuffer> buffer = SharedBuffer::create(data, size); + WebKitWebResource* webResource = webkit_web_resource_new_with_core_resource(ArchiveResource::create(buffer, KURL(KURL(), String::fromUTF8(uri)), String::fromUTF8(mimeType), String::fromUTF8(encoding), String::fromUTF8(frameName))); + + return webResource; +} + +/** + * webkit_web_resource_get_data: + * @web_resource: a #WebKitWebResource + * + * Returns the data of the @webResource. + * + * Return value: (transfer none): a #GString containing the character + * data of the @webResource. The string is owned by WebKit and should + * not be freed or destroyed. + * + * Since: 1.1.14 + */ +GString* webkit_web_resource_get_data(WebKitWebResource* webResource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL); + + WebKitWebResourcePrivate* priv = webResource->priv; + + if (!priv->resource) + return NULL; + + if (!priv->data) + priv->data = g_string_new_len(priv->resource->data()->data(), priv->resource->data()->size()); + + return priv->data; +} + +/** + * webkit_web_resource_get_uri: + * @web_resource: a #WebKitWebResource + * + * Return value: the URI of the resource + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_resource_get_uri(WebKitWebResource* webResource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL); + + WebKitWebResourcePrivate* priv = webResource->priv; + + + // We may have an URI without having a resource assigned to us (e.g., if the + // FrameLoaderClient only had a ResourceRequest when we got created + if (priv->uri) + return priv->uri; + + if (!priv->resource) + return NULL; + + priv->uri = g_strdup(priv->resource->url().string().utf8().data()); + + return priv->uri; +} + +/** + * webkit_web_resource_get_mime_type: + * @web_resource: a #WebKitWebResource + * + * Return value: the MIME type of the resource + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_resource_get_mime_type(WebKitWebResource* webResource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL); + + WebKitWebResourcePrivate* priv = webResource->priv; + if (!priv->resource) + return NULL; + + if (!priv->mimeType) + priv->mimeType = g_strdup(priv->resource->mimeType().utf8().data()); + + return priv->mimeType; +} + +/** + * webkit_web_resource_get_encoding: + * @web_resource: a #WebKitWebResource + * + * Return value: the encoding name of the resource + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_resource_get_encoding(WebKitWebResource* webResource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL); + + WebKitWebResourcePrivate* priv = webResource->priv; + if (!priv->resource) + return NULL; + + if (!priv->textEncoding) + priv->textEncoding = g_strdup(priv->resource->textEncoding().utf8().data()); + + return priv->textEncoding; +} + +/** + * webkit_web_resource_get_frame_name: + * @web_resource: a #WebKitWebResource + * + * Return value: the frame name of the resource. + * + * Since: 1.1.14 + */ +G_CONST_RETURN gchar* webkit_web_resource_get_frame_name(WebKitWebResource* webResource) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL); + + WebKitWebResourcePrivate* priv = webResource->priv; + if (!priv->resource) + return NULL; + + if (!priv->frameName) + priv->frameName = g_strdup(priv->resource->frameName().utf8().data()); + + return priv->frameName; +} + diff --git a/Source/WebKit/gtk/webkit/webkitwebresource.h b/Source/WebKit/gtk/webkit/webkitwebresource.h new file mode 100644 index 0000000..05f6066 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebresource.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2009 Jan Michael C. Alonzo + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebresource_h +#define webkitwebresource_h + +#include <glib.h> +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_RESOURCE (webkit_web_resource_get_type()) +#define WEBKIT_WEB_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResource)) +#define WEBKIT_WEB_RESOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourceClass)) +#define WEBKIT_IS_WEB_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_RESOURCE)) +#define WEBKIT_IS_WEB_RESOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_RESOURCE)) +#define WEBKIT_WEB_RESOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourceClass)) + +typedef struct _WebKitWebResourcePrivate WebKitWebResourcePrivate; + +struct _WebKitWebResource { + GObject parent_instance; + + /*< private >*/ + WebKitWebResourcePrivate *priv; +}; + +struct _WebKitWebResourceClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); +}; + +WEBKIT_API GType +webkit_web_resource_get_type (void); + +WEBKIT_API WebKitWebResource * +webkit_web_resource_new (const gchar *data, + gssize size, + const gchar *uri, + const gchar *mime_type, + const gchar *encoding, + const gchar *frame_name); + +WEBKIT_API GString * +webkit_web_resource_get_data (WebKitWebResource *web_resource); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_resource_get_uri (WebKitWebResource *web_resource); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_resource_get_mime_type (WebKitWebResource *web_resource); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_resource_get_encoding (WebKitWebResource *web_resource); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_resource_get_frame_name (WebKitWebResource *web_resource); + +G_END_DECLS + +#endif /* webkitwebresource_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h b/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h new file mode 100644 index 0000000..2ae3d05 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebresourceprivate_h +#define webkitwebresourceprivate_h + +#include "ArchiveResource.h" +#include "webkitwebresource.h" + +extern "C" { + +struct _WebKitWebResourcePrivate { + WebCore::ArchiveResource* resource; + + gchar* uri; + gchar* mimeType; + gchar* textEncoding; + gchar* frameName; + + GString* data; +}; + +WebKitWebResource* webkit_web_resource_new_with_core_resource(PassRefPtr<WebCore::ArchiveResource>); + +void webkit_web_resource_init_with_core_resource(WebKitWebResource*, PassRefPtr<WebCore::ArchiveResource>); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebsettings.cpp b/Source/WebKit/gtk/webkit/webkitwebsettings.cpp new file mode 100644 index 0000000..492c7b6 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebsettings.cpp @@ -0,0 +1,1443 @@ +/* + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2008 Holger Hans Peter Freyther + * Copyright (C) 2009 Jan Michael Alonzo + * Copyright (C) 2009 Movial Creative Technologies Inc. + * Copyright (C) 2009 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebsettings.h" + +#include "EditingBehavior.h" +#include "FileSystem.h" +#include "Language.h" +#include "PluginDatabase.h" +#include "webkitenumtypes.h" +#include "webkitglobalsprivate.h" +#include "webkitversion.h" +#include "webkitwebsettingsprivate.h" +#include <enchant.h> +#include <wtf/text/CString.h> +#include <wtf/text/StringConcatenate.h> +#include <glib/gi18n-lib.h> + +#if OS(UNIX) +#include <sys/utsname.h> +#endif + +/** + * SECTION:webkitwebsettings + * @short_description: Control the behaviour of a #WebKitWebView + * + * #WebKitWebSettings can be applied to a #WebKitWebView to control text encoding, + * color, font sizes, printing mode, script support, loading of images and various other things. + * After creation, a #WebKitWebSettings object contains default settings. + * + * <informalexample><programlisting> + * /<!-- -->* Create a new websettings and disable java script *<!-- -->/ + * WebKitWebSettings *settings = webkit_web_settings_new (); + * g_object_set (G_OBJECT(settings), "enable-scripts", FALSE, NULL); + * + * /<!-- -->* Apply the result *<!-- -->/ + * webkit_web_view_set_settings (WEBKIT_WEB_VIEW(my_webview), settings); + * </programlisting></informalexample> + */ + +using namespace WebCore; + +G_DEFINE_TYPE(WebKitWebSettings, webkit_web_settings, G_TYPE_OBJECT) + +struct _WebKitWebSettingsPrivate { + gchar* default_encoding; + gchar* cursive_font_family; + gchar* default_font_family; + gchar* fantasy_font_family; + gchar* monospace_font_family; + gchar* sans_serif_font_family; + gchar* serif_font_family; + guint default_font_size; + guint default_monospace_font_size; + guint minimum_font_size; + guint minimum_logical_font_size; + gboolean enforce_96_dpi; + gboolean auto_load_images; + gboolean auto_shrink_images; + gboolean print_backgrounds; + gboolean enable_scripts; + gboolean enable_plugins; + gboolean resizable_text_areas; + gchar* user_stylesheet_uri; + gfloat zoom_step; + gboolean enable_developer_extras; + gboolean enable_private_browsing; + gboolean enable_spell_checking; + gchar* spell_checking_languages; + GSList* enchant_dicts; + gboolean enable_caret_browsing; + gboolean enable_html5_database; + gboolean enable_html5_local_storage; + gboolean enable_xss_auditor; + gboolean enable_spatial_navigation; + gboolean enable_frame_flattening; + gchar* user_agent; + gboolean javascript_can_open_windows_automatically; + gboolean javascript_can_access_clipboard; + gboolean enable_offline_web_application_cache; + WebKitEditingBehavior editing_behavior; + gboolean enable_universal_access_from_file_uris; + gboolean enable_file_access_from_file_uris; + gboolean enable_dom_paste; + gboolean tab_key_cycles_through_elements; + gboolean enable_default_context_menu; + gboolean enable_site_specific_quirks; + gboolean enable_page_cache; + gboolean auto_resize_window; + gboolean enable_java_applet; + gboolean enable_hyperlink_auditing; + gboolean enable_fullscreen; +}; + +#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate)) + +enum { + PROP_0, + + PROP_DEFAULT_ENCODING, + PROP_CURSIVE_FONT_FAMILY, + PROP_DEFAULT_FONT_FAMILY, + PROP_FANTASY_FONT_FAMILY, + PROP_MONOSPACE_FONT_FAMILY, + PROP_SANS_SERIF_FONT_FAMILY, + PROP_SERIF_FONT_FAMILY, + PROP_DEFAULT_FONT_SIZE, + PROP_DEFAULT_MONOSPACE_FONT_SIZE, + PROP_MINIMUM_FONT_SIZE, + PROP_MINIMUM_LOGICAL_FONT_SIZE, + PROP_ENFORCE_96_DPI, + PROP_AUTO_LOAD_IMAGES, + PROP_AUTO_SHRINK_IMAGES, + PROP_PRINT_BACKGROUNDS, + PROP_ENABLE_SCRIPTS, + PROP_ENABLE_PLUGINS, + PROP_RESIZABLE_TEXT_AREAS, + PROP_USER_STYLESHEET_URI, + PROP_ZOOM_STEP, + PROP_ENABLE_DEVELOPER_EXTRAS, + PROP_ENABLE_PRIVATE_BROWSING, + PROP_ENABLE_SPELL_CHECKING, + PROP_SPELL_CHECKING_LANGUAGES, + PROP_ENABLE_CARET_BROWSING, + PROP_ENABLE_HTML5_DATABASE, + PROP_ENABLE_HTML5_LOCAL_STORAGE, + PROP_ENABLE_XSS_AUDITOR, + PROP_ENABLE_SPATIAL_NAVIGATION, + PROP_ENABLE_FRAME_FLATTENING, + PROP_USER_AGENT, + PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY, + PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD, + PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE, + PROP_EDITING_BEHAVIOR, + PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS, + PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS, + PROP_ENABLE_DOM_PASTE, + PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS, + PROP_ENABLE_DEFAULT_CONTEXT_MENU, + PROP_ENABLE_SITE_SPECIFIC_QUIRKS, + PROP_ENABLE_PAGE_CACHE, + PROP_AUTO_RESIZE_WINDOW, + PROP_ENABLE_JAVA_APPLET, + PROP_ENABLE_HYPERLINK_AUDITING, + PROP_ENABLE_FULLSCREEN +}; + +// Create a default user agent string +// This is a liberal interpretation of http://www.mozilla.org/build/revised-user-agent-strings.html +// See also http://developer.apple.com/internet/safari/faq.html#anchor2 +static String webkitPlatform() +{ +#if PLATFORM(X11) + DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("X11"))); +#elif OS(WINDOWS) + DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Windows"))); +#elif PLATFORM(MAC) + DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Macintosh"))); +#elif defined(GDK_WINDOWING_DIRECTFB) + DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("DirectFB"))); +#else + DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Unknown"))); +#endif + + return uaPlatform; +} + +static String webkitOSVersion() +{ + // FIXME: platform/version detection can be shared. +#if OS(DARWIN) + +#if CPU(X86) + DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Intel Mac OS X"))); +#else + DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("PPC Mac OS X"))); +#endif + +#elif OS(UNIX) + DEFINE_STATIC_LOCAL(String, uaOSVersion, (String())); + + if (!uaOSVersion.isEmpty()) + return uaOSVersion; + + struct utsname name; + if (uname(&name) != -1) + uaOSVersion = makeString(name.sysname, ' ', name.machine); + else + uaOSVersion = String("Unknown"); +#elif OS(WINDOWS) + DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Windows"))); +#else + DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Unknown"))); +#endif + + return uaOSVersion; +} + +String webkitUserAgent() +{ + // We mention Safari since many broken sites check for it (OmniWeb does this too) + // We re-use the WebKit version, though it doesn't seem to matter much in practice + + DEFINE_STATIC_LOCAL(const String, uaVersion, (makeString(String::number(WEBKIT_USER_AGENT_MAJOR_VERSION), '.', String::number(WEBKIT_USER_AGENT_MINOR_VERSION), '+'))); + DEFINE_STATIC_LOCAL(const String, staticUA, (makeString("Mozilla/5.0 (", webkitPlatform(), "; U; ", webkitOSVersion(), "; ", defaultLanguage(), ") AppleWebKit/", uaVersion) + + makeString(" (KHTML, like Gecko) Version/5.0 Safari/", uaVersion))); + + return staticUA; +} + +static void webkit_web_settings_finalize(GObject* object); + +static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); + +static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + gobject_class->finalize = webkit_web_settings_finalize; + gobject_class->set_property = webkit_web_settings_set_property; + gobject_class->get_property = webkit_web_settings_get_property; + + webkitInit(); + + GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_ENCODING, + g_param_spec_string( + "default-encoding", + _("Default Encoding"), + _("The default encoding used to display text."), + "iso-8859-1", + flags)); + + g_object_class_install_property(gobject_class, + PROP_CURSIVE_FONT_FAMILY, + g_param_spec_string( + "cursive-font-family", + _("Cursive Font Family"), + _("The default Cursive font family used to display text."), + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_FONT_FAMILY, + g_param_spec_string( + "default-font-family", + _("Default Font Family"), + _("The default font family used to display text."), + "sans-serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_FANTASY_FONT_FAMILY, + g_param_spec_string( + "fantasy-font-family", + _("Fantasy Font Family"), + _("The default Fantasy font family used to display text."), + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_MONOSPACE_FONT_FAMILY, + g_param_spec_string( + "monospace-font-family", + _("Monospace Font Family"), + _("The default font family used to display monospace text."), + "monospace", + flags)); + + g_object_class_install_property(gobject_class, + PROP_SANS_SERIF_FONT_FAMILY, + g_param_spec_string( + "sans-serif-font-family", + _("Sans Serif Font Family"), + _("The default Sans Serif font family used to display text."), + "sans-serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_SERIF_FONT_FAMILY, + g_param_spec_string( + "serif-font-family", + _("Serif Font Family"), + _("The default Serif font family used to display text."), + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_FONT_SIZE, + g_param_spec_int( + "default-font-size", + _("Default Font Size"), + _("The default font size used to display text."), + 5, G_MAXINT, 12, + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_MONOSPACE_FONT_SIZE, + g_param_spec_int( + "default-monospace-font-size", + _("Default Monospace Font Size"), + _("The default font size used to display monospace text."), + 5, G_MAXINT, 10, + flags)); + + g_object_class_install_property(gobject_class, + PROP_MINIMUM_FONT_SIZE, + g_param_spec_int( + "minimum-font-size", + _("Minimum Font Size"), + _("The minimum font size used to display text."), + 0, G_MAXINT, 5, + flags)); + + g_object_class_install_property(gobject_class, + PROP_MINIMUM_LOGICAL_FONT_SIZE, + g_param_spec_int( + "minimum-logical-font-size", + _("Minimum Logical Font Size"), + _("The minimum logical font size used to display text."), + 1, G_MAXINT, 5, + flags)); + + /** + * WebKitWebSettings:enforce-96-dpi: + * + * Enforce a resolution of 96 DPI. This is meant for compatibility + * with web pages which cope badly with different screen resolutions + * and for automated testing. + * Web browsers and applications that typically display arbitrary + * content from the web should provide a preference for this. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_ENFORCE_96_DPI, + g_param_spec_boolean( + "enforce-96-dpi", + _("Enforce 96 DPI"), + _("Enforce a resolution of 96 DPI"), + FALSE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_AUTO_LOAD_IMAGES, + g_param_spec_boolean( + "auto-load-images", + _("Auto Load Images"), + _("Load images automatically."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_AUTO_SHRINK_IMAGES, + g_param_spec_boolean( + "auto-shrink-images", + _("Auto Shrink Images"), + _("Automatically shrink standalone images to fit."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_PRINT_BACKGROUNDS, + g_param_spec_boolean( + "print-backgrounds", + _("Print Backgrounds"), + _("Whether background images should be printed."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_ENABLE_SCRIPTS, + g_param_spec_boolean( + "enable-scripts", + _("Enable Scripts"), + _("Enable embedded scripting languages."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_ENABLE_PLUGINS, + g_param_spec_boolean( + "enable-plugins", + _("Enable Plugins"), + _("Enable embedded plugin objects."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_RESIZABLE_TEXT_AREAS, + g_param_spec_boolean( + "resizable-text-areas", + _("Resizable Text Areas"), + _("Whether text areas are resizable."), + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_USER_STYLESHEET_URI, + g_param_spec_string("user-stylesheet-uri", + _("User Stylesheet URI"), + _("The URI of a stylesheet that is applied to every page."), + 0, + flags)); + + /** + * WebKitWebSettings:zoom-step: + * + * The value by which the zoom level is changed when zooming in or out. + * + * Since: 1.0.1 + */ + g_object_class_install_property(gobject_class, + PROP_ZOOM_STEP, + g_param_spec_float( + "zoom-step", + _("Zoom Stepping Value"), + _("The value by which the zoom level is changed when zooming in or out."), + 0.0f, G_MAXFLOAT, 0.1f, + flags)); + + /** + * WebKitWebSettings:enable-developer-extras: + * + * Whether developer extensions should be enabled. This enables, + * for now, the Web Inspector, which can be controlled using the + * #WebKitWebInspector instance held by the #WebKitWebView this + * setting is enabled for. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_DEVELOPER_EXTRAS, + g_param_spec_boolean( + "enable-developer-extras", + _("Enable Developer Extras"), + _("Enables special extensions that help developers"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-private-browsing: + * + * Whether to enable private browsing mode. Private browsing mode prevents + * WebKit from updating the global history and storing any session + * information e.g., on-disk cache, as well as suppressing any messages + * from being printed into the (javascript) console. + * + * This is currently experimental for WebKitGtk. + * + * Since: 1.1.2 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_PRIVATE_BROWSING, + g_param_spec_boolean( + "enable-private-browsing", + _("Enable Private Browsing"), + _("Enables private browsing mode"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-spell-checking: + * + * Whether to enable spell checking while typing. + * + * Since: 1.1.6 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_SPELL_CHECKING, + g_param_spec_boolean( + "enable-spell-checking", + _("Enable Spell Checking"), + _("Enables spell checking while typing"), + FALSE, + flags)); + + /** + * WebKitWebSettings:spell-checking-languages: + * + * The languages to be used for spell checking, separated by commas. + * + * The locale string typically is in the form lang_COUNTRY, where lang + * is an ISO-639 language code, and COUNTRY is an ISO-3166 country code. + * For instance, sv_FI for Swedish as written in Finland or pt_BR + * for Portuguese as written in Brazil. + * + * If no value is specified then the value returned by + * gtk_get_default_language will be used. + * + * Since: 1.1.6 + */ + g_object_class_install_property(gobject_class, + PROP_SPELL_CHECKING_LANGUAGES, + g_param_spec_string( + "spell-checking-languages", + _("Languages to use for spell checking"), + _("Comma separated list of languages to use for spell checking"), + 0, + flags)); + + /** + * WebKitWebSettings:enable-caret-browsing: + * + * Whether to enable caret browsing mode. + * + * Since: 1.1.6 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_CARET_BROWSING, + g_param_spec_boolean("enable-caret-browsing", + _("Enable Caret Browsing"), + _("Whether to enable accesibility enhanced keyboard navigation"), + FALSE, + flags)); + /** + * WebKitWebSettings:enable-html5-database: + * + * Whether to enable HTML5 client-side SQL database support. Client-side + * SQL database allows web pages to store structured data and be able to + * use SQL to manipulate that data asynchronously. + * + * Since: 1.1.8 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_HTML5_DATABASE, + g_param_spec_boolean("enable-html5-database", + _("Enable HTML5 Database"), + _("Whether to enable HTML5 database support"), + TRUE, + flags)); + + /** + * WebKitWebSettings:enable-html5-local-storage: + * + * Whether to enable HTML5 localStorage support. localStorage provides + * simple synchronous storage access. + * + * Since: 1.1.8 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_HTML5_LOCAL_STORAGE, + g_param_spec_boolean("enable-html5-local-storage", + _("Enable HTML5 Local Storage"), + _("Whether to enable HTML5 Local Storage support"), + TRUE, + flags)); + /** + * WebKitWebSettings:enable-xss-auditor + * + * Whether to enable the XSS Auditor. This feature filters some kinds of + * reflective XSS attacks on vulnerable web sites. + * + * Since: 1.1.11 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_XSS_AUDITOR, + g_param_spec_boolean("enable-xss-auditor", + _("Enable XSS Auditor"), + _("Whether to enable the XSS auditor"), + TRUE, + flags)); + /** + * WebKitWebSettings:enable-spatial-navigation + * + * Whether to enable the Spatial Navigation. This feature consists in the ability + * to navigate between focusable elements in a Web page, such as hyperlinks and + * form controls, by using Left, Right, Up and Down arrow keys. For example, if + * an user presses the Right key, heuristics determine whether there is an element + * he might be trying to reach towards the right, and if there are multiple elements, + * which element he probably wants. + * + * Since: 1.1.23 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_SPATIAL_NAVIGATION, + g_param_spec_boolean("enable-spatial-navigation", + _("Enable Spatial Navigation"), + _("Whether to enable Spatial Navigation"), + FALSE, + flags)); + /** + * WebKitWebSettings:enable-frame-flattening + * + * Whether to enable the Frame Flattening. With this setting each subframe is expanded + * to its contents, which will flatten all the frames to become one scrollable page. + * On touch devices, it is desired to not have any scrollable sub parts of the page as + * it results in a confusing user experience, with scrolling sometimes scrolling sub parts + * and at other times scrolling the page itself. For this reason iframes and framesets are + * barely usable on touch devices. + * + * Since: 1.3.5 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_FRAME_FLATTENING, + g_param_spec_boolean("enable-frame-flattening", + _("Enable Frame Flattening"), + _("Whether to enable Frame Flattening"), + FALSE, + flags)); + /** + * WebKitWebSettings:user-agent: + * + * The User-Agent string used by WebKitGtk. + * + * This will return a default User-Agent string if a custom string wasn't + * provided by the application. Setting this property to a NULL value or + * an empty string will result in the User-Agent string being reset to the + * default value. + * + * Since: 1.1.11 + */ + g_object_class_install_property(gobject_class, PROP_USER_AGENT, + g_param_spec_string("user-agent", + _("User Agent"), + _("The User-Agent string used by WebKitGtk"), + webkitUserAgent().utf8().data(), + flags)); + + /** + * WebKitWebSettings:javascript-can-open-windows-automatically + * + * Whether JavaScript can open popup windows automatically without user + * intervention. + * + * Since: 1.1.11 + */ + g_object_class_install_property(gobject_class, + PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY, + g_param_spec_boolean("javascript-can-open-windows-automatically", + _("JavaScript can open windows automatically"), + _("Whether JavaScript can open windows automatically"), + FALSE, + flags)); + + /** + * WebKitWebSettings:javascript-can-access-clipboard + * + * Whether JavaScript can access Clipboard. + * + * Since: 1.3.0 + */ + g_object_class_install_property(gobject_class, + PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD, + g_param_spec_boolean("javascript-can-access-clipboard", + _("JavaScript can access Clipboard"), + _("Whether JavaScript can access Clipboard"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-offline-web-application-cache + * + * Whether to enable HTML5 offline web application cache support. Offline + * Web Application Cache ensures web applications are available even when + * the user is not connected to the network. + * + * Since: 1.1.13 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE, + g_param_spec_boolean("enable-offline-web-application-cache", + _("Enable offline web application cache"), + _("Whether to enable offline web application cache"), + TRUE, + flags)); + + COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_MAC) == static_cast<int>(WebCore::EditingMacBehavior), editing_behavior_type_mac_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_WINDOWS) == static_cast<int>(WebCore::EditingWindowsBehavior), editing_behavior_type_windows_match); + COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_UNIX) == static_cast<int>(WebCore::EditingUnixBehavior), editing_behavior_type_unix_match); + + /** + * WebKitWebSettings:editing-behavior + * + * This setting controls various editing behaviors that differ + * between platforms and that have been combined in two groups, + * 'Mac' and 'Windows'. Some examples: + * + * 1) Clicking below the last line of an editable area puts the + * caret at the end of the last line on Mac, but in the middle of + * the last line on Windows. + * + * 2) Pushing down the arrow key on the last line puts the caret + * at the end of the last line on Mac, but does nothing on + * Windows. A similar case exists on the top line. + * + * Since: 1.1.13 + */ + g_object_class_install_property(gobject_class, + PROP_EDITING_BEHAVIOR, + g_param_spec_enum("editing-behavior", + _("Editing behavior"), + _("The behavior mode to use in editing mode"), + WEBKIT_TYPE_EDITING_BEHAVIOR, + WEBKIT_EDITING_BEHAVIOR_UNIX, + flags)); + + /** + * WebKitWebSettings:enable-universal-access-from-file-uris + * + * Whether to allow files loaded through file:// URIs universal access to + * all pages. + * + * Since: 1.1.13 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS, + g_param_spec_boolean("enable-universal-access-from-file-uris", + _("Enable universal access from file URIs"), + _("Whether to allow universal access from file URIs"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-dom-paste + * + * Whether to enable DOM paste. If set to %TRUE, document.execCommand("Paste") + * will correctly execute and paste content of the clipboard. + * + * Since: 1.1.16 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_DOM_PASTE, + g_param_spec_boolean("enable-dom-paste", + _("Enable DOM paste"), + _("Whether to enable DOM paste"), + FALSE, + flags)); + /** + * WebKitWebSettings:tab-key-cycles-through-elements: + * + * Whether the tab key cycles through elements on the page. + * + * If @flag is %TRUE, pressing the tab key will focus the next element in + * the @web_view. If @flag is %FALSE, the @web_view will interpret tab + * key presses as normal key presses. If the selected element is editable, the + * tab key will cause the insertion of a tab character. + * + * Since: 1.1.17 + */ + g_object_class_install_property(gobject_class, + PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS, + g_param_spec_boolean("tab-key-cycles-through-elements", + _("Tab key cycles through elements"), + _("Whether the tab key cycles through elements on the page."), + TRUE, + flags)); + + /** + * WebKitWebSettings:enable-default-context-menu: + * + * Whether right-clicks should be handled automatically to create, + * and display the context menu. Turning this off will make + * WebKitGTK+ not emit the populate-popup signal. Notice that the + * default button press event handler may still handle right + * clicks for other reasons, such as in-page context menus, or + * right-clicks that are handled by the page itself. + * + * Since: 1.1.18 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_DEFAULT_CONTEXT_MENU, + g_param_spec_boolean( + "enable-default-context-menu", + _("Enable Default Context Menu"), + _("Enables the handling of right-clicks for the creation of the default context menu"), + TRUE, + flags)); + + /** + * WebKitWebSettings::enable-site-specific-quirks + * + * Whether to turn on site-specific hacks. Turning this on will + * tell WebKitGTK+ to use some site-specific workarounds for + * better web compatibility. For example, older versions of + * MediaWiki will incorrectly send WebKit a css file with KHTML + * workarounds. By turning on site-specific quirks, WebKit will + * special-case this and other cases to make the sites work. + * + * Since: 1.1.18 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_SITE_SPECIFIC_QUIRKS, + g_param_spec_boolean( + "enable-site-specific-quirks", + _("Enable Site Specific Quirks"), + _("Enables the site-specific compatibility workarounds"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-page-cache: + * + * Enable or disable the page cache. Disabling the page cache is + * generally only useful for special circumstances like low-memory + * scenarios or special purpose applications like static HTML + * viewers. This setting only controls the Page Cache, this cache + * is different than the disk-based or memory-based traditional + * resource caches, its point is to make going back and forth + * between pages much faster. For details about the different types + * of caches and their purposes see: + * http://webkit.org/blog/427/webkit-page-cache-i-the-basics/ + * + * Since: 1.1.18 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_PAGE_CACHE, + g_param_spec_boolean("enable-page-cache", + _("Enable page cache"), + _("Whether the page cache should be used"), + FALSE, + flags)); + + /** + * WebKitWebSettings:auto-resize-window: + * + * Web pages can request to modify the size and position of the + * window containing the #WebKitWebView through various DOM methods + * (resizeTo, moveTo, resizeBy, moveBy). By default WebKit will not + * honor this requests, but you can set this property to %TRUE if + * you'd like it to do so. If you wish to handle this manually, you + * can connect to the notify signal for the + * #WebKitWebWindowFeatures of your #WebKitWebView. + * + * Since: 1.1.22 + */ + g_object_class_install_property(gobject_class, + PROP_AUTO_RESIZE_WINDOW, + g_param_spec_boolean("auto-resize-window", + _("Auto Resize Window"), + _("Automatically resize the toplevel window when a page requests it"), + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-file-access-from-file-uris: + * + * Boolean property to control file access for file:// URIs. If this + * option is enabled every file:// will have its own security unique domain. + * + * Since: 1.1.22 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS, + g_param_spec_boolean("enable-file-access-from-file-uris", + "Enable file access from file URIs", + "Controls file access for file:// URIs.", + FALSE, + flags)); + + /** + * WebKitWebSettings:enable-java-applet: + * + * Enable or disable support for the Java <applet> tag. Keep in + * mind that Java content can be still shown in the page through + * <object> or <embed>, which are the preferred tags for this task. + * + * Since: 1.1.22 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_JAVA_APPLET, + g_param_spec_boolean("enable-java-applet", + _("Enable Java Applet"), + _("Whether Java Applet support through <applet> should be enabled"), + TRUE, + flags)); + + /** + * WebKitWebSettings:enable-hyperlink-auditing: + * + * Enable or disable support for <a ping>. + * + * Since: 1.2.5 + */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_HYPERLINK_AUDITING, + g_param_spec_boolean("enable-hyperlink-auditing", + _("Enable Hyperlink Auditing"), + _("Whether <a ping> should be able to send pings"), + FALSE, + flags)); + + /* Undocumented for now */ + g_object_class_install_property(gobject_class, + PROP_ENABLE_FULLSCREEN, + g_param_spec_boolean("enable-fullscreen", + _("Enable Fullscreen"), + _("Whether the Mozilla style API should be enabled."), + FALSE, + flags)); + + g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate)); +} + +static void webkit_web_settings_init(WebKitWebSettings* web_settings) +{ + web_settings->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_settings, WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate); +} + +static EnchantBroker* get_enchant_broker() +{ + static EnchantBroker* broker = 0; + if (!broker) + broker = enchant_broker_init(); + + return broker; +} + +static void free_spell_checking_language(gpointer data, gpointer user_data) +{ + EnchantDict* dict = static_cast<EnchantDict*>(data); + EnchantBroker* broker = get_enchant_broker(); + + enchant_broker_free_dict(broker, dict); +} + +static void webkit_web_settings_finalize(GObject* object) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + + g_free(priv->default_encoding); + g_free(priv->cursive_font_family); + g_free(priv->default_font_family); + g_free(priv->fantasy_font_family); + g_free(priv->monospace_font_family); + g_free(priv->sans_serif_font_family); + g_free(priv->serif_font_family); + g_free(priv->user_stylesheet_uri); + g_free(priv->spell_checking_languages); + + g_slist_foreach(priv->enchant_dicts, free_spell_checking_language, 0); + g_slist_free(priv->enchant_dicts); + + g_free(priv->user_agent); + + G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object); +} + +static void getAvailableDictionariesCallback(const char* const languageTag, const char* const, const char* const, const char* const, void* data) +{ + Vector<CString>* dicts = static_cast<Vector<CString>*>(data); + + dicts->append(languageTag); +} + +static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + EnchantBroker* broker; + EnchantDict* dict; + GSList* spellDictionaries = 0; + + switch(prop_id) { + case PROP_DEFAULT_ENCODING: + g_free(priv->default_encoding); + priv->default_encoding = g_strdup(g_value_get_string(value)); + break; + case PROP_CURSIVE_FONT_FAMILY: + g_free(priv->cursive_font_family); + priv->cursive_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_DEFAULT_FONT_FAMILY: + g_free(priv->default_font_family); + priv->default_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_FANTASY_FONT_FAMILY: + g_free(priv->fantasy_font_family); + priv->fantasy_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_MONOSPACE_FONT_FAMILY: + g_free(priv->monospace_font_family); + priv->monospace_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_SANS_SERIF_FONT_FAMILY: + g_free(priv->sans_serif_font_family); + priv->sans_serif_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_SERIF_FONT_FAMILY: + g_free(priv->serif_font_family); + priv->serif_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_DEFAULT_FONT_SIZE: + priv->default_font_size = g_value_get_int(value); + break; + case PROP_DEFAULT_MONOSPACE_FONT_SIZE: + priv->default_monospace_font_size = g_value_get_int(value); + break; + case PROP_MINIMUM_FONT_SIZE: + priv->minimum_font_size = g_value_get_int(value); + break; + case PROP_MINIMUM_LOGICAL_FONT_SIZE: + priv->minimum_logical_font_size = g_value_get_int(value); + break; + case PROP_ENFORCE_96_DPI: + priv->enforce_96_dpi = g_value_get_boolean(value); + break; + case PROP_AUTO_LOAD_IMAGES: + priv->auto_load_images = g_value_get_boolean(value); + break; + case PROP_AUTO_SHRINK_IMAGES: + priv->auto_shrink_images = g_value_get_boolean(value); + break; + case PROP_PRINT_BACKGROUNDS: + priv->print_backgrounds = g_value_get_boolean(value); + break; + case PROP_ENABLE_SCRIPTS: + priv->enable_scripts = g_value_get_boolean(value); + break; + case PROP_ENABLE_PLUGINS: + priv->enable_plugins = g_value_get_boolean(value); + break; + case PROP_RESIZABLE_TEXT_AREAS: + priv->resizable_text_areas = g_value_get_boolean(value); + break; + case PROP_USER_STYLESHEET_URI: + g_free(priv->user_stylesheet_uri); + priv->user_stylesheet_uri = g_strdup(g_value_get_string(value)); + break; + case PROP_ZOOM_STEP: + priv->zoom_step = g_value_get_float(value); + break; + case PROP_ENABLE_DEVELOPER_EXTRAS: + priv->enable_developer_extras = g_value_get_boolean(value); + break; + case PROP_ENABLE_PRIVATE_BROWSING: + priv->enable_private_browsing = g_value_get_boolean(value); + break; + case PROP_ENABLE_CARET_BROWSING: + priv->enable_caret_browsing = g_value_get_boolean(value); + break; + case PROP_ENABLE_HTML5_DATABASE: + priv->enable_html5_database = g_value_get_boolean(value); + break; + case PROP_ENABLE_HTML5_LOCAL_STORAGE: + priv->enable_html5_local_storage = g_value_get_boolean(value); + break; + case PROP_ENABLE_SPELL_CHECKING: + priv->enable_spell_checking = g_value_get_boolean(value); + break; + case PROP_SPELL_CHECKING_LANGUAGES: + g_free(priv->spell_checking_languages); + priv->spell_checking_languages = g_strdup(g_value_get_string(value)); + + broker = get_enchant_broker(); + if (priv->spell_checking_languages) { + char** langs = g_strsplit(priv->spell_checking_languages, ",", -1); + for (int i = 0; langs[i]; i++) { + if (enchant_broker_dict_exists(broker, langs[i])) { + dict = enchant_broker_request_dict(broker, langs[i]); + spellDictionaries = g_slist_append(spellDictionaries, dict); + } + } + g_strfreev(langs); + } else { + const char* language = pango_language_to_string(gtk_get_default_language()); + if (enchant_broker_dict_exists(broker, language)) { + dict = enchant_broker_request_dict(broker, language); + spellDictionaries = g_slist_append(spellDictionaries, dict); + } else { + // No dictionaries selected, we get one from the list + Vector<CString> allDictionaries; + enchant_broker_list_dicts(broker, getAvailableDictionariesCallback, &allDictionaries); + if (!allDictionaries.isEmpty()) { + dict = enchant_broker_request_dict(broker, allDictionaries[0].data()); + spellDictionaries = g_slist_append(spellDictionaries, dict); + } + } + } + g_slist_foreach(priv->enchant_dicts, free_spell_checking_language, 0); + g_slist_free(priv->enchant_dicts); + priv->enchant_dicts = spellDictionaries; + break; + case PROP_ENABLE_XSS_AUDITOR: + priv->enable_xss_auditor = g_value_get_boolean(value); + break; + case PROP_ENABLE_SPATIAL_NAVIGATION: + priv->enable_spatial_navigation = g_value_get_boolean(value); + break; + case PROP_ENABLE_FRAME_FLATTENING: + priv->enable_frame_flattening = g_value_get_boolean(value); + break; + case PROP_USER_AGENT: + g_free(priv->user_agent); + if (!g_value_get_string(value) || !strlen(g_value_get_string(value))) + priv->user_agent = g_strdup(webkitUserAgent().utf8().data()); + else + priv->user_agent = g_strdup(g_value_get_string(value)); + break; + case PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY: + priv->javascript_can_open_windows_automatically = g_value_get_boolean(value); + break; + case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD: + priv->javascript_can_access_clipboard = g_value_get_boolean(value); + break; + case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE: + priv->enable_offline_web_application_cache = g_value_get_boolean(value); + break; + case PROP_EDITING_BEHAVIOR: + priv->editing_behavior = static_cast<WebKitEditingBehavior>(g_value_get_enum(value)); + break; + case PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS: + priv->enable_universal_access_from_file_uris = g_value_get_boolean(value); + break; + case PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS: + priv->enable_file_access_from_file_uris = g_value_get_boolean(value); + break; + case PROP_ENABLE_DOM_PASTE: + priv->enable_dom_paste = g_value_get_boolean(value); + break; + case PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS: + priv->tab_key_cycles_through_elements = g_value_get_boolean(value); + break; + case PROP_ENABLE_DEFAULT_CONTEXT_MENU: + priv->enable_default_context_menu = g_value_get_boolean(value); + break; + case PROP_ENABLE_SITE_SPECIFIC_QUIRKS: + priv->enable_site_specific_quirks = g_value_get_boolean(value); + break; + case PROP_ENABLE_PAGE_CACHE: + priv->enable_page_cache = g_value_get_boolean(value); + break; + case PROP_AUTO_RESIZE_WINDOW: + priv->auto_resize_window = g_value_get_boolean(value); + break; + case PROP_ENABLE_JAVA_APPLET: + priv->enable_java_applet = g_value_get_boolean(value); + break; + case PROP_ENABLE_HYPERLINK_AUDITING: + priv->enable_hyperlink_auditing = g_value_get_boolean(value); + break; + case PROP_ENABLE_FULLSCREEN: + priv->enable_fullscreen = g_value_get_boolean(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + + switch (prop_id) { + case PROP_DEFAULT_ENCODING: + g_value_set_string(value, priv->default_encoding); + break; + case PROP_CURSIVE_FONT_FAMILY: + g_value_set_string(value, priv->cursive_font_family); + break; + case PROP_DEFAULT_FONT_FAMILY: + g_value_set_string(value, priv->default_font_family); + break; + case PROP_FANTASY_FONT_FAMILY: + g_value_set_string(value, priv->fantasy_font_family); + break; + case PROP_MONOSPACE_FONT_FAMILY: + g_value_set_string(value, priv->monospace_font_family); + break; + case PROP_SANS_SERIF_FONT_FAMILY: + g_value_set_string(value, priv->sans_serif_font_family); + break; + case PROP_SERIF_FONT_FAMILY: + g_value_set_string(value, priv->serif_font_family); + break; + case PROP_DEFAULT_FONT_SIZE: + g_value_set_int(value, priv->default_font_size); + break; + case PROP_DEFAULT_MONOSPACE_FONT_SIZE: + g_value_set_int(value, priv->default_monospace_font_size); + break; + case PROP_MINIMUM_FONT_SIZE: + g_value_set_int(value, priv->minimum_font_size); + break; + case PROP_MINIMUM_LOGICAL_FONT_SIZE: + g_value_set_int(value, priv->minimum_logical_font_size); + break; + case PROP_ENFORCE_96_DPI: + g_value_set_boolean(value, priv->enforce_96_dpi); + break; + case PROP_AUTO_LOAD_IMAGES: + g_value_set_boolean(value, priv->auto_load_images); + break; + case PROP_AUTO_SHRINK_IMAGES: + g_value_set_boolean(value, priv->auto_shrink_images); + break; + case PROP_PRINT_BACKGROUNDS: + g_value_set_boolean(value, priv->print_backgrounds); + break; + case PROP_ENABLE_SCRIPTS: + g_value_set_boolean(value, priv->enable_scripts); + break; + case PROP_ENABLE_PLUGINS: + g_value_set_boolean(value, priv->enable_plugins); + break; + case PROP_RESIZABLE_TEXT_AREAS: + g_value_set_boolean(value, priv->resizable_text_areas); + break; + case PROP_USER_STYLESHEET_URI: + g_value_set_string(value, priv->user_stylesheet_uri); + break; + case PROP_ZOOM_STEP: + g_value_set_float(value, priv->zoom_step); + break; + case PROP_ENABLE_DEVELOPER_EXTRAS: + g_value_set_boolean(value, priv->enable_developer_extras); + break; + case PROP_ENABLE_PRIVATE_BROWSING: + g_value_set_boolean(value, priv->enable_private_browsing); + break; + case PROP_ENABLE_CARET_BROWSING: + g_value_set_boolean(value, priv->enable_caret_browsing); + break; + case PROP_ENABLE_HTML5_DATABASE: + g_value_set_boolean(value, priv->enable_html5_database); + break; + case PROP_ENABLE_HTML5_LOCAL_STORAGE: + g_value_set_boolean(value, priv->enable_html5_local_storage); + break; + case PROP_ENABLE_SPELL_CHECKING: + g_value_set_boolean(value, priv->enable_spell_checking); + break; + case PROP_SPELL_CHECKING_LANGUAGES: + g_value_set_string(value, priv->spell_checking_languages); + break; + case PROP_ENABLE_XSS_AUDITOR: + g_value_set_boolean(value, priv->enable_xss_auditor); + break; + case PROP_ENABLE_SPATIAL_NAVIGATION: + g_value_set_boolean(value, priv->enable_spatial_navigation); + break; + case PROP_ENABLE_FRAME_FLATTENING: + g_value_set_boolean(value, priv->enable_frame_flattening); + break; + case PROP_USER_AGENT: + g_value_set_string(value, priv->user_agent); + break; + case PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY: + g_value_set_boolean(value, priv->javascript_can_open_windows_automatically); + break; + case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD: + g_value_set_boolean(value, priv->javascript_can_access_clipboard); + break; + case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE: + g_value_set_boolean(value, priv->enable_offline_web_application_cache); + break; + case PROP_EDITING_BEHAVIOR: + g_value_set_enum(value, priv->editing_behavior); + break; + case PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS: + g_value_set_boolean(value, priv->enable_universal_access_from_file_uris); + break; + case PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS: + g_value_set_boolean(value, priv->enable_file_access_from_file_uris); + break; + case PROP_ENABLE_DOM_PASTE: + g_value_set_boolean(value, priv->enable_dom_paste); + break; + case PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS: + g_value_set_boolean(value, priv->tab_key_cycles_through_elements); + break; + case PROP_ENABLE_DEFAULT_CONTEXT_MENU: + g_value_set_boolean(value, priv->enable_default_context_menu); + break; + case PROP_ENABLE_SITE_SPECIFIC_QUIRKS: + g_value_set_boolean(value, priv->enable_site_specific_quirks); + break; + case PROP_ENABLE_PAGE_CACHE: + g_value_set_boolean(value, priv->enable_page_cache); + break; + case PROP_AUTO_RESIZE_WINDOW: + g_value_set_boolean(value, priv->auto_resize_window); + break; + case PROP_ENABLE_JAVA_APPLET: + g_value_set_boolean(value, priv->enable_java_applet); + break; + case PROP_ENABLE_HYPERLINK_AUDITING: + g_value_set_boolean(value, priv->enable_hyperlink_auditing); + break; + case PROP_ENABLE_FULLSCREEN: + g_value_set_boolean(value, priv->enable_fullscreen); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +/** + * webkit_web_settings_new: + * + * Creates a new #WebKitWebSettings instance with default values. It must + * be manually attached to a WebView. + * + * Returns: a new #WebKitWebSettings instance + **/ +WebKitWebSettings* webkit_web_settings_new() +{ + return WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS, NULL)); +} + +/** + * webkit_web_settings_copy: + * + * Copies an existing #WebKitWebSettings instance. + * + * Returns: (transfer full): a new #WebKitWebSettings instance + **/ +WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings) +{ + WebKitWebSettingsPrivate* priv = web_settings->priv; + + WebKitWebSettings* copy = WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS, + "default-encoding", priv->default_encoding, + "cursive-font-family", priv->cursive_font_family, + "default-font-family", priv->default_font_family, + "fantasy-font-family", priv->fantasy_font_family, + "monospace-font-family", priv->monospace_font_family, + "sans-serif-font-family", priv->sans_serif_font_family, + "serif-font-family", priv->serif_font_family, + "default-font-size", priv->default_font_size, + "default-monospace-font-size", priv->default_monospace_font_size, + "minimum-font-size", priv->minimum_font_size, + "minimum-logical-font-size", priv->minimum_logical_font_size, + "auto-load-images", priv->auto_load_images, + "auto-shrink-images", priv->auto_shrink_images, + "print-backgrounds", priv->print_backgrounds, + "enable-scripts", priv->enable_scripts, + "enable-plugins", priv->enable_plugins, + "resizable-text-areas", priv->resizable_text_areas, + "user-stylesheet-uri", priv->user_stylesheet_uri, + "zoom-step", priv->zoom_step, + "enable-developer-extras", priv->enable_developer_extras, + "enable-private-browsing", priv->enable_private_browsing, + "enable-spell-checking", priv->enable_spell_checking, + "spell-checking-languages", priv->spell_checking_languages, + "enable-caret-browsing", priv->enable_caret_browsing, + "enable-html5-database", priv->enable_html5_database, + "enable-html5-local-storage", priv->enable_html5_local_storage, + "enable-xss-auditor", priv->enable_xss_auditor, + "enable-spatial-navigation", priv->enable_spatial_navigation, + "enable-frame-flattening", priv->enable_frame_flattening, + "user-agent", webkit_web_settings_get_user_agent(web_settings), + "javascript-can-open-windows-automatically", priv->javascript_can_open_windows_automatically, + "javascript-can-access-clipboard", priv->javascript_can_access_clipboard, + "enable-offline-web-application-cache", priv->enable_offline_web_application_cache, + "editing-behavior", priv->editing_behavior, + "enable-universal-access-from-file-uris", priv->enable_universal_access_from_file_uris, + "enable-file-access-from-file-uris", priv->enable_file_access_from_file_uris, + "enable-dom-paste", priv->enable_dom_paste, + "tab-key-cycles-through-elements", priv->tab_key_cycles_through_elements, + "enable-default-context-menu", priv->enable_default_context_menu, + "enable-site-specific-quirks", priv->enable_site_specific_quirks, + "enable-page-cache", priv->enable_page_cache, + "auto-resize-window", priv->auto_resize_window, + "enable-java-applet", priv->enable_java_applet, + "enable-hyperlink-auditing", priv->enable_hyperlink_auditing, + "enable-fullscreen", priv->enable_fullscreen, + NULL)); + + return copy; +} + +/** + * webkit_web_settings_add_extra_plugin_directory: + * @web_view: a #WebKitWebView + * @directory: the directory to add + * + * Adds the @directory to paths where @web_view will search for plugins. + * + * Since: 1.0.3 + */ +void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* webView, const gchar* directory) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + PluginDatabase::installedPlugins()->addExtraPluginDirectory(filenameToString(directory)); +} + +/** + * webkit_web_settings_get_user_agent: + * @web_settings: a #WebKitWebSettings + * + * Returns the User-Agent string currently used by the web view(s) associated + * with the @web_settings. + * + * Since: 1.1.11 + */ +G_CONST_RETURN gchar* webkit_web_settings_get_user_agent(WebKitWebSettings* webSettings) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_SETTINGS(webSettings), NULL); + + WebKitWebSettingsPrivate* priv = webSettings->priv; + + return priv->user_agent; +} + +GSList* webkitWebViewGetEnchantDicts(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + + WebKitWebSettings* settings = webkit_web_view_get_settings(webView); + + return settings->priv->enchant_dicts; +} + +namespace WebKit { + +WebCore::EditingBehaviorType core(WebKitEditingBehavior type) +{ + return (WebCore::EditingBehaviorType)type; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebsettings.h b/Source/WebKit/gtk/webkit/webkitwebsettings.h new file mode 100644 index 0000000..eee0d04 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebsettings.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebsettings_h +#define webkitwebsettings_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_SETTINGS (webkit_web_settings_get_type()) +#define WEBKIT_WEB_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettings)) +#define WEBKIT_WEB_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsClass)) +#define WEBKIT_IS_WEB_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_SETTINGS)) +#define WEBKIT_IS_WEB_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_SETTINGS)) +#define WEBKIT_WEB_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsClass)) + +typedef enum { + WEBKIT_EDITING_BEHAVIOR_MAC, + WEBKIT_EDITING_BEHAVIOR_WINDOWS, + WEBKIT_EDITING_BEHAVIOR_UNIX +} WebKitEditingBehavior; + +typedef struct _WebKitWebSettingsPrivate WebKitWebSettingsPrivate; + +struct _WebKitWebSettings { + GObject parent_instance; + + /*< private >*/ + WebKitWebSettingsPrivate *priv; +}; + +struct _WebKitWebSettingsClass { + GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); +}; + +WEBKIT_API GType +webkit_web_settings_get_type (void); + +WEBKIT_API WebKitWebSettings * +webkit_web_settings_new (void); + +WEBKIT_API WebKitWebSettings * +webkit_web_settings_copy (WebKitWebSettings *web_settings); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_settings_get_user_agent (WebKitWebSettings *web_settings); + +G_END_DECLS + +#endif /* webkitwebsettings_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h b/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h new file mode 100644 index 0000000..9700ba5 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebsettingsprivate_h +#define webkitwebsettingsprivate_h + +#include "webkitwebsettings.h" + +extern "C" { + +WEBKIT_API void webkit_web_settings_add_extra_plugin_directory(WebKitWebView*, const gchar* directory); + +GSList* webkitWebViewGetEnchantDicts(WebKitWebView*); + +WTF::String webkitUserAgent(); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebview.cpp b/Source/WebKit/gtk/webkit/webkitwebview.cpp new file mode 100644 index 0000000..e5d5b84 --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebview.cpp @@ -0,0 +1,5143 @@ +/* + * Copyright (C) 2007, 2008 Holger Hans Peter Freyther + * Copyright (C) 2007, 2008, 2009 Christian Dywan <christian@imendio.com> + * Copyright (C) 2007 Xan Lopez <xan@gnome.org> + * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com> + * Copyright (C) 2008 Jan Alonzo <jmalonzo@unpluggable.com> + * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org> + * Copyright (C) 2008 Nuanti Ltd. + * Copyright (C) 2008, 2009, 2010 Collabora Ltd. + * Copyright (C) 2009, 2010 Igalia S.L. + * Copyright (C) 2009 Movial Creative Technologies Inc. + * Copyright (C) 2009 Bobby Powers + * Copyright (C) 2010 Joone Hur <joone@kldp.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "webkitwebview.h" + +#include "AXObjectCache.h" +#include "AbstractDatabase.h" +#include "BackForwardListImpl.h" +#include "Chrome.h" +#include "ChromeClientGtk.h" +#include "ClipboardUtilitiesGtk.h" +#include "ContextMenu.h" +#include "ContextMenuClientGtk.h" +#include "ContextMenuController.h" +#include "Cursor.h" +#include "Document.h" +#include "DocumentLoader.h" +#include "DragActions.h" +#include "DragClientGtk.h" +#include "DragController.h" +#include "DragData.h" +#include "Editor.h" +#include "EditorClientGtk.h" +#include "EventHandler.h" +#include "FloatQuad.h" +#include "FocusController.h" +#include "FrameLoader.h" +#include "FrameLoaderTypes.h" +#include "FrameView.h" +#include "GOwnPtrGtk.h" +#include "GraphicsContext.h" +#include "GtkVersioning.h" +#include "HTMLNames.h" +#include "HitTestRequest.h" +#include "HitTestResult.h" +#include "IconDatabase.h" +#include "InspectorClientGtk.h" +#include "InspectorController.h" +#include "MemoryCache.h" +#include "MouseEventWithHitTestResults.h" +#include "NotImplemented.h" +#include "PageCache.h" +#include "Pasteboard.h" +#include "PasteboardHelper.h" +#include "PasteboardHelperGtk.h" +#include "PlatformKeyboardEvent.h" +#include "PlatformWheelEvent.h" +#include "ProgressTracker.h" +#include "RenderView.h" +#include "ResourceHandle.h" +#include "ScriptValue.h" +#include "Scrollbar.h" +#include "Settings.h" +#include "webkit/WebKitDOMDocumentPrivate.h" +#include "webkitdownload.h" +#include "webkitdownloadprivate.h" +#include "webkitenumtypes.h" +#include "webkitgeolocationpolicydecision.h" +#include "webkitglobalsprivate.h" +#include "webkithittestresultprivate.h" +#include "webkitmarshal.h" +#include "webkitnetworkrequest.h" +#include "webkitnetworkresponse.h" +#include "webkitviewportattributes.h" +#include "webkitviewportattributesprivate.h" +#include "webkitwebbackforwardlist.h" +#include "webkitwebframeprivate.h" +#include "webkitwebhistoryitem.h" +#include "webkitwebhistoryitemprivate.h" +#include "webkitwebinspector.h" +#include "webkitwebinspectorprivate.h" +#include "webkitwebpolicydecision.h" +#include "webkitwebresource.h" +#include "webkitwebsettingsprivate.h" +#include "webkitwebplugindatabaseprivate.h" +#include "webkitwebwindowfeatures.h" +#include "webkitwebviewprivate.h" +#include <gdk/gdkkeysyms.h> +#include <glib/gi18n-lib.h> +#include <wtf/gobject/GOwnPtr.h> +#include <wtf/text/CString.h> + +/** + * SECTION:webkitwebview + * @short_description: The central class of the WebKitGTK+ API + * @see_also: #WebKitWebSettings, #WebKitWebFrame + * + * #WebKitWebView is the central class of the WebKitGTK+ API. It is a + * #GtkWidget implementing the scrolling interface which means you can + * embed in a #GtkScrolledWindow. It is responsible for managing the + * drawing of the content, forwarding of events. You can load any URI + * into the #WebKitWebView or any kind of data string. With #WebKitWebSettings + * you can control various aspects of the rendering and loading of the content. + * Each #WebKitWebView has exactly one #WebKitWebFrame as main frame. A + * #WebKitWebFrame can have n children. + * + * <programlisting> + * /<!-- -->* Create the widgets *<!-- -->/ + * GtkWidget *main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + * GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL); + * GtkWidget *web_view = webkit_web_view_new (); + * + * /<!-- -->* Place the WebKitWebView in the GtkScrolledWindow *<!-- -->/ + * gtk_container_add (GTK_CONTAINER (scrolled_window), web_view); + * gtk_container_add (GTK_CONTAINER (main_window), scrolled_window); + * + * /<!-- -->* Open a webpage *<!-- -->/ + * webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), "http://www.gnome.org"); + * + * /<!-- -->* Show the result *<!-- -->/ + * gtk_window_set_default_size (GTK_WINDOW (main_window), 800, 600); + * gtk_widget_show_all (main_window); + * </programlisting> + */ + +static const double defaultDPI = 96.0; +static IntPoint globalPointForClientPoint(GdkWindow* window, const IntPoint& clientPoint); + +using namespace WebKit; +using namespace WebCore; + +enum { + /* normal signals */ + NAVIGATION_REQUESTED, + NEW_WINDOW_POLICY_DECISION_REQUESTED, + NAVIGATION_POLICY_DECISION_REQUESTED, + MIME_TYPE_POLICY_DECISION_REQUESTED, + CREATE_WEB_VIEW, + WEB_VIEW_READY, + WINDOW_OBJECT_CLEARED, + LOAD_STARTED, + LOAD_COMMITTED, + LOAD_PROGRESS_CHANGED, + LOAD_ERROR, + LOAD_FINISHED, + TITLE_CHANGED, + HOVERING_OVER_LINK, + POPULATE_POPUP, + STATUS_BAR_TEXT_CHANGED, + ICON_LOADED, + SELECTION_CHANGED, + CONSOLE_MESSAGE, + SCRIPT_ALERT, + SCRIPT_CONFIRM, + SCRIPT_PROMPT, + SELECT_ALL, + COPY_CLIPBOARD, + PASTE_CLIPBOARD, + CUT_CLIPBOARD, + DOWNLOAD_REQUESTED, + MOVE_CURSOR, + PRINT_REQUESTED, + PLUGIN_WIDGET, + CLOSE_WEB_VIEW, + UNDO, + REDO, + DATABASE_QUOTA_EXCEEDED, + RESOURCE_REQUEST_STARTING, + DOCUMENT_LOAD_FINISHED, + GEOLOCATION_POLICY_DECISION_REQUESTED, + GEOLOCATION_POLICY_DECISION_CANCELLED, + ONLOAD_EVENT, + FRAME_CREATED, + SHOULD_BEGIN_EDITING, + SHOULD_END_EDITING, + SHOULD_INSERT_NODE, + SHOULD_INSERT_TEXT, + SHOULD_DELETE_RANGE, + SHOULD_SHOW_DELETE_INTERFACE_FOR_ELEMENT, + SHOULD_CHANGE_SELECTED_RANGE, + SHOULD_APPLY_STYLE, + EDITING_BEGAN, + USER_CHANGED_CONTENTS, + EDITING_ENDED, + VIEWPORT_ATTRIBUTES_RECOMPUTE_REQUESTED, + VIEWPORT_ATTRIBUTES_CHANGED, + + LAST_SIGNAL +}; + +enum { + PROP_0, + + PROP_TITLE, + PROP_URI, + PROP_COPY_TARGET_LIST, + PROP_PASTE_TARGET_LIST, + PROP_EDITABLE, + PROP_SETTINGS, + PROP_WEB_INSPECTOR, + PROP_VIEWPORT_ATTRIBUTES, + PROP_WINDOW_FEATURES, + PROP_TRANSPARENT, + PROP_ZOOM_LEVEL, + PROP_FULL_CONTENT_ZOOM, + PROP_LOAD_STATUS, + PROP_PROGRESS, + PROP_ENCODING, + PROP_CUSTOM_ENCODING, + PROP_ICON_URI, + PROP_IM_CONTEXT, +#ifdef GTK_API_VERSION_2 + PROP_VIEW_MODE +#else + PROP_VIEW_MODE, + PROP_HADJUSTMENT, + PROP_VADJUSTMENT, + PROP_HSCROLL_POLICY, + PROP_VSCROLL_POLICY +#endif +}; + +static guint webkit_web_view_signals[LAST_SIGNAL] = { 0, }; + +#ifdef GTK_API_VERSION_2 +G_DEFINE_TYPE(WebKitWebView, webkit_web_view, GTK_TYPE_CONTAINER) +#else +G_DEFINE_TYPE_WITH_CODE(WebKitWebView, webkit_web_view, GTK_TYPE_CONTAINER, + G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, 0)) +#endif + +static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView); +static void webkit_web_view_set_window_features(WebKitWebView* webView, WebKitWebWindowFeatures* webWindowFeatures); + +static GtkIMContext* webkit_web_view_get_im_context(WebKitWebView*); + +static void PopupMenuPositionFunc(GtkMenu* menu, gint *x, gint *y, gboolean *pushIn, gpointer userData) +{ + WebKitWebView* view = WEBKIT_WEB_VIEW(userData); + WebKitWebViewPrivate* priv = view->priv; + GdkScreen* screen = gtk_widget_get_screen(GTK_WIDGET(view)); + GtkRequisition menuSize; + +#ifdef GTK_API_VERSION_2 + gtk_widget_size_request(GTK_WIDGET(menu), &menuSize); +#else + gtk_widget_get_preferred_size(GTK_WIDGET(menu), &menuSize, NULL); +#endif + + *x = priv->lastPopupXPosition; + if ((*x + menuSize.width) >= gdk_screen_get_width(screen)) + *x -= menuSize.width; + + *y = priv->lastPopupYPosition; + if ((*y + menuSize.height) >= gdk_screen_get_height(screen)) + *y -= menuSize.height; + + *pushIn = FALSE; +} + +static Node* getFocusedNode(Frame* frame) +{ + if (Document* doc = frame->document()) + return doc->focusedNode(); + return 0; +} + +static void contextMenuItemActivated(GtkMenuItem* item, ContextMenuController* controller) +{ + ContextMenuItem contextItem(item); + controller->contextMenuItemSelected(&contextItem); +} + +static void contextMenuConnectActivate(GtkMenuItem* item, ContextMenuController* controller) +{ + if (GTK_IS_SEPARATOR_MENU_ITEM(item)) + return; + + if (GtkWidget* menu = gtk_menu_item_get_submenu(item)) { + gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)contextMenuConnectActivate, controller); + return; + } + + g_signal_connect(item, "activate", G_CALLBACK(contextMenuItemActivated), controller); +} + +static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent& event) +{ + Page* page = core(webView); + page->contextMenuController()->clearContextMenu(); + Frame* focusedFrame; + Frame* mainFrame = page->mainFrame(); + gboolean mousePressEventResult = FALSE; + + if (!mainFrame->view()) + return FALSE; + + mainFrame->view()->setCursor(pointerCursor()); + if (page->frameCount()) { + HitTestRequest request(HitTestRequest::Active); + IntPoint point = mainFrame->view()->windowToContents(event.pos()); + MouseEventWithHitTestResults mev = mainFrame->document()->prepareMouseEvent(request, point, event); + + Frame* targetFrame = EventHandler::subframeForTargetNode(mev.targetNode()); + if (!targetFrame) + targetFrame = mainFrame; + + focusedFrame = page->focusController()->focusedOrMainFrame(); + if (targetFrame != focusedFrame) { + page->focusController()->setFocusedFrame(targetFrame); + focusedFrame = targetFrame; + } + } else + focusedFrame = mainFrame; + + if (focusedFrame->view() && focusedFrame->eventHandler()->handleMousePressEvent(event)) + mousePressEventResult = TRUE; + + + bool handledEvent = focusedFrame->eventHandler()->sendContextMenuEvent(event); + if (!handledEvent) + return FALSE; + + // If coreMenu is NULL, this means WebCore decided to not create + // the default context menu; this may happen when the page is + // handling the right-click for reasons other than the context menu. + ContextMenuController* controller = page->contextMenuController(); + ContextMenu* coreMenu = controller->contextMenu(); + if (!coreMenu) + return mousePressEventResult; + + // If we reach here, it's because WebCore is going to show the + // default context menu. We check our setting to figure out + // whether we want it or not. + WebKitWebSettings* settings = webkit_web_view_get_settings(webView); + gboolean enableDefaultContextMenu; + g_object_get(settings, "enable-default-context-menu", &enableDefaultContextMenu, NULL); + + if (!enableDefaultContextMenu) + return FALSE; + + GtkMenu* menu = GTK_MENU(coreMenu->platformDescription()); + if (!menu) + return FALSE; + + // We connect the "activate" signal here rather than in ContextMenuGtk to avoid + // a layering violation. ContextMenuGtk should not know about the ContextMenuController. + gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)contextMenuConnectActivate, controller); + + g_signal_emit(webView, webkit_web_view_signals[POPULATE_POPUP], 0, menu); + + // If the context menu is now empty, don't show it. + GOwnPtr<GList> items(gtk_container_get_children(GTK_CONTAINER(menu))); + if (!items) + return FALSE; + + WebKitWebViewPrivate* priv = webView->priv; + priv->currentMenu = menu; + priv->lastPopupXPosition = event.globalX(); + priv->lastPopupYPosition = event.globalY(); + + gtk_menu_popup(menu, 0, 0, &PopupMenuPositionFunc, webView, event.button() + 1, gtk_get_current_event_time()); + return TRUE; +} + +static gboolean webkit_web_view_popup_menu_handler(GtkWidget* widget) +{ + static const int contextMenuMargin = 1; + + // The context menu event was generated from the keyboard, so show the context menu by the current selection. + Page* page = core(WEBKIT_WEB_VIEW(widget)); + Frame* frame = page->focusController()->focusedOrMainFrame(); + FrameView* view = frame->view(); + if (!view) + return FALSE; + + Position start = frame->selection()->selection().start(); + Position end = frame->selection()->selection().end(); + + int rightAligned = FALSE; + IntPoint location; + + if (!start.node() || !end.node() + || (frame->selection()->selection().isCaret() && !frame->selection()->selection().isContentEditable())) { + // If there's a focused elment, use its location. + if (Node* focusedNode = getFocusedNode(frame)) { + IntRect focusedNodeRect = focusedNode->getRect(); + location = IntPoint(rightAligned ? focusedNodeRect.right() : focusedNodeRect.x(), focusedNodeRect.bottom()); + } else + location = IntPoint(rightAligned ? view->contentsWidth() - contextMenuMargin : contextMenuMargin, contextMenuMargin); + } else { + RenderObject* renderer = start.node()->renderer(); + if (!renderer) + return FALSE; + + // Calculate the rect of the first line of the selection (cribbed from -[WebCoreFrameBridge firstRectForDOMRange:], + // now Frame::firstRectForRange(), which perhaps this should call). + int extraWidthToEndOfLine = 0; + + InlineBox* startInlineBox; + int startCaretOffset; + start.getInlineBoxAndOffset(DOWNSTREAM, startInlineBox, startCaretOffset); + IntRect startCaretRect = renderer->localCaretRect(startInlineBox, startCaretOffset, &extraWidthToEndOfLine); + if (startCaretRect != IntRect()) + startCaretRect = renderer->localToAbsoluteQuad(FloatRect(startCaretRect)).enclosingBoundingBox(); + + InlineBox* endInlineBox; + int endCaretOffset; + end.getInlineBoxAndOffset(UPSTREAM, endInlineBox, endCaretOffset); + IntRect endCaretRect = renderer->localCaretRect(endInlineBox, endCaretOffset); + if (endCaretRect != IntRect()) + endCaretRect = renderer->localToAbsoluteQuad(FloatRect(endCaretRect)).enclosingBoundingBox(); + + IntRect firstRect; + if (startCaretRect.y() == endCaretRect.y()) + firstRect = IntRect(MIN(startCaretRect.x(), endCaretRect.x()), + startCaretRect.y(), + abs(endCaretRect.x() - startCaretRect.x()), + MAX(startCaretRect.height(), endCaretRect.height())); + else + firstRect = IntRect(startCaretRect.x(), + startCaretRect.y(), + startCaretRect.width() + extraWidthToEndOfLine, + startCaretRect.height()); + + location = IntPoint(rightAligned ? firstRect.right() : firstRect.x(), firstRect.bottom()); + } + + // FIXME: The IntSize(0, -1) is a hack to get the hit-testing to result in the selected element. + // Ideally we'd have the position of a context menu event be separate from its target node. + location = view->contentsToWindow(location) + IntSize(0, -1); + if (location.y() < 0) + location.setY(contextMenuMargin); + else if (location.y() > view->height()) + location.setY(view->height() - contextMenuMargin); + if (location.x() < 0) + location.setX(contextMenuMargin); + else if (location.x() > view->width()) + location.setX(view->width() - contextMenuMargin); + IntPoint global(globalPointForClientPoint(gtk_widget_get_window(widget), location)); + + PlatformMouseEvent event(location, global, RightButton, MouseEventPressed, 0, false, false, false, false, gtk_get_current_event_time()); + + return webkit_web_view_forward_context_menu_event(WEBKIT_WEB_VIEW(widget), event); +} + +#ifndef GTK_API_VERSION_2 +static void setHorizontalAdjustment(WebKitWebView* webView, GtkAdjustment* adjustment) +{ + if (!core(webView)) + return; + + webView->priv->horizontalAdjustment = adjustment; + FrameView* view = core(webkit_web_view_get_main_frame(webView))->view(); + if (!view) + return; + view->setHorizontalAdjustment(adjustment); +} + +static void setVerticalAdjustment(WebKitWebView* webView, GtkAdjustment* adjustment) +{ + if (!core(webView)) + return; + + webView->priv->verticalAdjustment = adjustment; + FrameView* view = core(webkit_web_view_get_main_frame(webView))->view(); + if (!view) + return; + view->setVerticalAdjustment(adjustment); +} + +static GtkAdjustment* getHorizontalAdjustment(WebKitWebView* webView) +{ + return webView->priv->horizontalAdjustment.get(); +} + +static GtkAdjustment* getVerticalAdjustment(WebKitWebView* webView) +{ + return webView->priv->verticalAdjustment.get(); +} + +static void setHorizontalScrollPolicy(WebKitWebView* webView, GtkScrollablePolicy policy) +{ + webView->priv->horizontalScrollingPolicy = policy; + gtk_widget_queue_resize(GTK_WIDGET(webView)); +} + +static void setVerticalScrollPolicy(WebKitWebView* webView, GtkScrollablePolicy policy) +{ + webView->priv->verticalScrollingPolicy = policy; + gtk_widget_queue_resize(GTK_WIDGET(webView)); +} + +static GtkScrollablePolicy getHorizontalScrollPolicy(WebKitWebView* webView) +{ + return webView->priv->horizontalScrollingPolicy; +} + +static GtkScrollablePolicy getVerticalScrollPolicy(WebKitWebView* webView) +{ + return webView->priv->verticalScrollingPolicy; +} + +#endif + +static void webkit_web_view_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(object); + + switch(prop_id) { + case PROP_TITLE: + g_value_set_string(value, webkit_web_view_get_title(webView)); + break; + case PROP_URI: + g_value_set_string(value, webkit_web_view_get_uri(webView)); + break; + case PROP_COPY_TARGET_LIST: + g_value_set_boxed(value, webkit_web_view_get_copy_target_list(webView)); + break; + case PROP_PASTE_TARGET_LIST: + g_value_set_boxed(value, webkit_web_view_get_paste_target_list(webView)); + break; + case PROP_EDITABLE: + g_value_set_boolean(value, webkit_web_view_get_editable(webView)); + break; + case PROP_SETTINGS: + g_value_set_object(value, webkit_web_view_get_settings(webView)); + break; + case PROP_WEB_INSPECTOR: + g_value_set_object(value, webkit_web_view_get_inspector(webView)); + break; + case PROP_VIEWPORT_ATTRIBUTES: + g_value_set_object(value, webkit_web_view_get_viewport_attributes(webView)); + break; + case PROP_WINDOW_FEATURES: + g_value_set_object(value, webkit_web_view_get_window_features(webView)); + break; + case PROP_TRANSPARENT: + g_value_set_boolean(value, webkit_web_view_get_transparent(webView)); + break; + case PROP_ZOOM_LEVEL: + g_value_set_float(value, webkit_web_view_get_zoom_level(webView)); + break; + case PROP_FULL_CONTENT_ZOOM: + g_value_set_boolean(value, webkit_web_view_get_full_content_zoom(webView)); + break; + case PROP_ENCODING: + g_value_set_string(value, webkit_web_view_get_encoding(webView)); + break; + case PROP_CUSTOM_ENCODING: + g_value_set_string(value, webkit_web_view_get_custom_encoding(webView)); + break; + case PROP_LOAD_STATUS: + g_value_set_enum(value, webkit_web_view_get_load_status(webView)); + break; + case PROP_PROGRESS: + g_value_set_double(value, webkit_web_view_get_progress(webView)); + break; + case PROP_ICON_URI: + g_value_set_string(value, webkit_web_view_get_icon_uri(webView)); + break; + case PROP_IM_CONTEXT: + g_value_set_object(value, webkit_web_view_get_im_context(webView)); + break; + case PROP_VIEW_MODE: + g_value_set_enum(value, webkit_web_view_get_view_mode(webView)); + break; +#ifndef GTK_API_VERSION_2 + case PROP_HADJUSTMENT: + g_value_set_object(value, getHorizontalAdjustment(webView)); + break; + case PROP_VADJUSTMENT: + g_value_set_object(value, getVerticalAdjustment(webView)); + break; + case PROP_HSCROLL_POLICY: + g_value_set_enum(value, getHorizontalScrollPolicy(webView)); + break; + case PROP_VSCROLL_POLICY: + g_value_set_enum(value, getVerticalScrollPolicy(webView)); + break; +#endif + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +static void webkit_web_view_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec *pspec) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(object); + + switch(prop_id) { + case PROP_EDITABLE: + webkit_web_view_set_editable(webView, g_value_get_boolean(value)); + break; + case PROP_SETTINGS: + webkit_web_view_set_settings(webView, WEBKIT_WEB_SETTINGS(g_value_get_object(value))); + break; + case PROP_WINDOW_FEATURES: + webkit_web_view_set_window_features(webView, WEBKIT_WEB_WINDOW_FEATURES(g_value_get_object(value))); + break; + case PROP_TRANSPARENT: + webkit_web_view_set_transparent(webView, g_value_get_boolean(value)); + break; + case PROP_ZOOM_LEVEL: + webkit_web_view_set_zoom_level(webView, g_value_get_float(value)); + break; + case PROP_FULL_CONTENT_ZOOM: + webkit_web_view_set_full_content_zoom(webView, g_value_get_boolean(value)); + break; + case PROP_CUSTOM_ENCODING: + webkit_web_view_set_custom_encoding(webView, g_value_get_string(value)); + break; + case PROP_VIEW_MODE: + webkit_web_view_set_view_mode(webView, static_cast<WebKitWebViewViewMode>(g_value_get_enum(value))); + break; +#ifndef GTK_API_VERSION_2 + case PROP_HADJUSTMENT: + setHorizontalAdjustment(webView, static_cast<GtkAdjustment*>(g_value_get_object(value))); + break; + case PROP_VADJUSTMENT: + setVerticalAdjustment(webView, static_cast<GtkAdjustment*>(g_value_get_object(value))); + break; + case PROP_HSCROLL_POLICY: + setHorizontalScrollPolicy(webView, static_cast<GtkScrollablePolicy>(g_value_get_enum(value))); + break; + case PROP_VSCROLL_POLICY: + setVerticalScrollPolicy(webView, static_cast<GtkScrollablePolicy>(g_value_get_enum(value))); + break; +#endif + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +static bool shouldCoalesce(const IntRect& rect, const Vector<IntRect>& rects) +{ + const unsigned int cRectThreshold = 10; + const float cWastedSpaceThreshold = 0.75f; + bool useUnionedRect = (rects.size() <= 1) || (rects.size() > cRectThreshold); + if (useUnionedRect) + return true; + // Attempt to guess whether or not we should use the unioned rect or the individual rects. + // We do this by computing the percentage of "wasted space" in the union. If that wasted space + // is too large, then we will do individual rect painting instead. + float unionPixels = (rect.width() * rect.height()); + float singlePixels = 0; + for (size_t i = 0; i < rects.size(); ++i) + singlePixels += rects[i].width() * rects[i].height(); + float wastedSpace = 1 - (singlePixels / unionPixels); + if (wastedSpace <= cWastedSpaceThreshold) + useUnionedRect = true; + return useUnionedRect; +} + +static void paintWebView(Frame* frame, gboolean transparent, GraphicsContext& context, const IntRect& clipRect, const Vector<IntRect>& rects) +{ + bool coalesce = true; + + if (rects.size() > 0) + coalesce = shouldCoalesce(clipRect, rects); + + if (coalesce) { + context.clip(clipRect); + if (transparent) + context.clearRect(clipRect); + frame->view()->paint(&context, clipRect); + } else { + for (size_t i = 0; i < rects.size(); i++) { + IntRect rect = rects[i]; + context.save(); + context.clip(rect); + if (transparent) + context.clearRect(rect); + frame->view()->paint(&context, rect); + context.restore(); + } + } + + context.save(); + context.clip(clipRect); + frame->page()->inspectorController()->drawNodeHighlight(context); + context.restore(); +} +#ifdef GTK_API_VERSION_2 +static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + Frame* frame = core(webView)->mainFrame(); + if (frame->contentRenderer() && frame->view()) { + frame->view()->updateLayoutAndStyleIfNeededRecursive(); + + cairo_t* cr = gdk_cairo_create(event->window); + GraphicsContext ctx(cr); + cairo_destroy(cr); + ctx.setGdkExposeEvent(event); + + int rectCount; + GOwnPtr<GdkRectangle> rects; + gdk_region_get_rectangles(event->region, &rects.outPtr(), &rectCount); + Vector<IntRect> paintRects; + for (int i = 0; i < rectCount; i++) + paintRects.append(IntRect(rects.get()[i])); + + paintWebView(frame, priv->transparent, ctx, static_cast<IntRect>(event->area), paintRects); + } + + return FALSE; +} +#else +static gboolean webkit_web_view_draw(GtkWidget* widget, cairo_t* cr) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + GdkRectangle clipRect; + + if (!gdk_cairo_get_clip_rectangle(cr, &clipRect)) + return FALSE; + + Frame* frame = core(webView)->mainFrame(); + if (frame->contentRenderer() && frame->view()) { + GraphicsContext ctx(cr); + IntRect rect = clipRect; + cairo_rectangle_list_t* rectList = cairo_copy_clip_rectangle_list(cr); + + frame->view()->updateLayoutAndStyleIfNeededRecursive(); + + Vector<IntRect> rects; + if (!rectList->status && rectList->num_rectangles > 0) { + for (int i = 0; i < rectList->num_rectangles; i++) + rects.append(enclosingIntRect(FloatRect(rectList->rectangles[i]))); + } + paintWebView(frame, priv->transparent, ctx, rect, rects); + + cairo_rectangle_list_destroy(rectList); + } + + return FALSE; +} +#endif // GTK_API_VERSION_2 + +static gboolean webkit_web_view_key_press_event(GtkWidget* widget, GdkEventKey* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + PlatformKeyboardEvent keyboardEvent(event); + + if (!frame->view()) + return FALSE; + + if (frame->eventHandler()->keyEvent(keyboardEvent)) + return TRUE; + + /* Chain up to our parent class for binding activation */ + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->key_press_event(widget, event); +} + +static gboolean webkit_web_view_key_release_event(GtkWidget* widget, GdkEventKey* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + // GTK+ IM contexts often require us to filter key release events, which + // WebCore does not do by default, so we filter the event here. We only block + // the event if we don't have a pending composition, because that means we + // are using a context like 'simple' which marks every keystroke as filtered. + WebKit::EditorClient* client = static_cast<WebKit::EditorClient*>(core(webView)->editorClient()); + if (gtk_im_context_filter_keypress(webView->priv->imContext.get(), event) && !client->hasPendingComposition()) + return TRUE; + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + if (!frame->view()) + return FALSE; + + PlatformKeyboardEvent keyboardEvent(event); + if (frame->eventHandler()->keyEvent(keyboardEvent)) + return TRUE; + + /* Chain up to our parent class for binding activation */ + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->key_release_event(widget, event); +} + +static guint32 getEventTime(GdkEvent* event) +{ + guint32 time = gdk_event_get_time(event); + if (time) + return time; + + // Real events always have a non-zero time, but events synthesized + // by the DRT do not and we must calculate a time manually. This time + // is not calculated in the DRT, because GTK+ does not work well with + // anything other than GDK_CURRENT_TIME on synthesized events. + GTimeVal timeValue; + g_get_current_time(&timeValue); + return (timeValue.tv_sec * 1000) + (timeValue.tv_usec / 1000); +} + +static gboolean webkit_web_view_button_press_event(GtkWidget* widget, GdkEventButton* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + // FIXME: need to keep track of subframe focus for key events + gtk_widget_grab_focus(widget); + + // For double and triple clicks GDK sends both a normal button press event + // and a specific type (like GDK_2BUTTON_PRESS). If we detect a special press + // coming up, ignore this event as it certainly generated the double or triple + // click. The consequence of not eating this event is two DOM button press events + // are generated. + GOwnPtr<GdkEvent> nextEvent(gdk_event_peek()); + if (nextEvent && (nextEvent->any.type == GDK_2BUTTON_PRESS || nextEvent->any.type == GDK_3BUTTON_PRESS)) + return TRUE; + + gint doubleClickDistance = 250; + gint doubleClickTime = 5; + GtkSettings* settings = gtk_settings_get_for_screen(gtk_widget_get_screen(widget)); + g_object_get(settings, + "gtk-double-click-distance", &doubleClickDistance, + "gtk-double-click-time", &doubleClickTime, NULL); + + // GTK+ only counts up to triple clicks, but WebCore wants to know about + // quadruple clicks, quintuple clicks, ad infinitum. Here, we replicate the + // GDK logic for counting clicks. + guint32 eventTime = getEventTime(reinterpret_cast<GdkEvent*>(event)); + if ((event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) + || ((abs(event->x - priv->previousClickPoint.x()) < doubleClickDistance) + && (abs(event->y - priv->previousClickPoint.y()) < doubleClickDistance) + && (eventTime - priv->previousClickTime < static_cast<guint>(doubleClickTime)) + && (event->button == priv->previousClickButton))) + priv->currentClickCount++; + else + priv->currentClickCount = 1; + + PlatformMouseEvent platformEvent(event); + platformEvent.setClickCount(priv->currentClickCount); + priv->previousClickPoint = platformEvent.pos(); + priv->previousClickButton = event->button; + priv->previousClickTime = eventTime; + + if (event->button == 3) + return webkit_web_view_forward_context_menu_event(webView, PlatformMouseEvent(event)); + + Frame* frame = core(webView)->mainFrame(); + if (!frame->view()) + return FALSE; + + gboolean result = frame->eventHandler()->handleMousePressEvent(platformEvent); + // Handle the IM context when a mouse press fires + static_cast<WebKit::EditorClient*>(core(webView)->editorClient())->handleInputMethodMousePress(); + +#if PLATFORM(X11) + /* Copy selection to the X11 selection clipboard */ + if (event->button == 2) { + bool primary = webView->priv->usePrimaryForPaste; + webView->priv->usePrimaryForPaste = true; + + Editor* editor = webView->priv->corePage->focusController()->focusedOrMainFrame()->editor(); + result = result || editor->canPaste() || editor->canDHTMLPaste(); + editor->paste(); + + webView->priv->usePrimaryForPaste = primary; + } +#endif + + return result; +} + +static gboolean webkit_web_view_button_release_event(GtkWidget* widget, GdkEventButton* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + Frame* focusedFrame = core(webView)->focusController()->focusedFrame(); + + if (focusedFrame && focusedFrame->editor()->canEdit()) { +#ifdef MAEMO_CHANGES + WebKitWebViewPrivate* priv = webView->priv; + hildon_gtk_im_context_filter_event(priv->imContext.get(), (GdkEvent*)event); +#endif + } + + Frame* mainFrame = core(webView)->mainFrame(); + if (mainFrame->view()) + mainFrame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); + + /* We always return FALSE here because WebKit can, for the same click, decide + * to not handle press-event but handle release-event, which can totally confuse + * some GTK+ containers when there are no other events in between. This way we + * guarantee that this case never happens, and that if press-event goes through + * release-event also goes through. + */ + + return FALSE; +} + +static gboolean webkit_web_view_motion_event(GtkWidget* widget, GdkEventMotion* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + Frame* frame = core(webView)->mainFrame(); + if (!frame->view()) + return FALSE; + + return frame->eventHandler()->mouseMoved(PlatformMouseEvent(event)); +} + +static gboolean webkit_web_view_scroll_event(GtkWidget* widget, GdkEventScroll* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + Frame* frame = core(webView)->mainFrame(); + if (!frame->view()) + return FALSE; + + PlatformWheelEvent wheelEvent(event); + return frame->eventHandler()->handleWheelEvent(wheelEvent); +} + +#ifdef GTK_API_VERSION_2 +static void webkit_web_view_size_request(GtkWidget* widget, GtkRequisition* requisition) +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget); + Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view)); + if (!coreFrame) + return; + + FrameView* view = coreFrame->view(); + if (!view) + return; + + requisition->width = view->contentsWidth(); + requisition->height = view->contentsHeight(); +} +#else +static void webkit_web_view_get_preferred_width(GtkWidget* widget, gint* minimum, gint* natural) +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget); + Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view)); + if (!coreFrame) + return; + + FrameView* view = coreFrame->view(); + if (!view) + return; + + *minimum = *natural = view->contentsWidth(); +} + +static void webkit_web_view_get_preferred_height(GtkWidget* widget, gint* minimum, gint* natural) +{ + WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget); + Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view)); + if (!coreFrame) + return; + + FrameView* view = coreFrame->view(); + if (!view) + return; + + *minimum = *natural = view->contentsHeight(); +} +#endif + +static void webkit_web_view_size_allocate(GtkWidget* widget, GtkAllocation* allocation) +{ + GTK_WIDGET_CLASS(webkit_web_view_parent_class)->size_allocate(widget,allocation); + + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + Frame* frame = core(webView)->mainFrame(); + if (!frame->view()) + return; + + frame->view()->resize(allocation->width, allocation->height); +} + +static void webkit_web_view_grab_focus(GtkWidget* widget) +{ + + if (gtk_widget_is_sensitive(widget)) { + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + FocusController* focusController = core(webView)->focusController(); + + focusController->setActive(true); + + if (focusController->focusedFrame()) + focusController->setFocused(true); + else + focusController->setFocusedFrame(core(webView)->mainFrame()); + } + + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->grab_focus(widget); +} + +static gboolean webkit_web_view_focus_in_event(GtkWidget* widget, GdkEventFocus* event) +{ + // TODO: Improve focus handling as suggested in + // http://bugs.webkit.org/show_bug.cgi?id=16910 + GtkWidget* toplevel = gtk_widget_get_toplevel(widget); + if (gtk_widget_is_toplevel(toplevel) && gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) { + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + FocusController* focusController = core(webView)->focusController(); + + focusController->setActive(true); + + if (focusController->focusedFrame()) + focusController->setFocused(true); + else + focusController->setFocusedFrame(core(webView)->mainFrame()); + + if (focusController->focusedFrame()->editor()->canEdit()) + gtk_im_context_focus_in(webView->priv->imContext.get()); + } + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_in_event(widget, event); +} + +static gboolean webkit_web_view_focus_out_event(GtkWidget* widget, GdkEventFocus* event) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + // We may hit this code while destroying the widget, and we might + // no longer have a page, then. + Page* page = core(webView); + if (page) { + page->focusController()->setActive(false); + page->focusController()->setFocused(false); + } + + if (webView->priv->imContext) + gtk_im_context_focus_out(webView->priv->imContext.get()); + + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_out_event(widget, event); +} + +static void webkit_web_view_realize(GtkWidget* widget) +{ + gtk_widget_set_realized(widget, TRUE); + + GtkAllocation allocation; +#if GTK_CHECK_VERSION(2, 18, 0) + gtk_widget_get_allocation(widget, &allocation); +#else + allocation = widget->allocation; +#endif + + GdkWindowAttr attributes; + attributes.window_type = GDK_WINDOW_CHILD; + attributes.x = allocation.x; + attributes.y = allocation.y; + attributes.width = allocation.width; + attributes.height = allocation.height; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.visual = gtk_widget_get_visual(widget); +#ifdef GTK_API_VERSION_2 + attributes.colormap = gtk_widget_get_colormap(widget); +#endif + attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK + | GDK_EXPOSURE_MASK + | GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_POINTER_MOTION_MASK + | GDK_KEY_PRESS_MASK + | GDK_KEY_RELEASE_MASK + | GDK_BUTTON_MOTION_MASK + | GDK_BUTTON1_MOTION_MASK + | GDK_BUTTON2_MOTION_MASK + | GDK_BUTTON3_MOTION_MASK; + + gint attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; +#ifdef GTK_API_VERSION_2 + attributes_mask |= GDK_WA_COLORMAP; +#endif + GdkWindow* window = gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attributes_mask); + gtk_widget_set_window(widget, window); + gdk_window_set_user_data(window, widget); + +#ifdef GTK_API_VERSION_2 +#if GTK_CHECK_VERSION(2, 20, 0) + gtk_widget_style_attach(widget); +#else + widget->style = gtk_style_attach(gtk_widget_get_style(widget), window); +#endif + gtk_style_set_background(gtk_widget_get_style(widget), window, GTK_STATE_NORMAL); +#else + gtk_style_context_set_background(gtk_widget_get_style_context(widget), window); +#endif + + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + gtk_im_context_set_client_window(priv->imContext.get(), window); +} + +#ifdef GTK_API_VERSION_2 +static void webkit_web_view_set_scroll_adjustments(WebKitWebView* webView, GtkAdjustment* hadj, GtkAdjustment* vadj) +{ + if (!core(webView)) + return; + + webView->priv->horizontalAdjustment = hadj; + webView->priv->verticalAdjustment = vadj; + + FrameView* view = core(webkit_web_view_get_main_frame(webView))->view(); + if (!view) + return; + view->setGtkAdjustments(hadj, vadj); +} +#endif + +static void webkit_web_view_container_add(GtkContainer* container, GtkWidget* widget) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(container); + WebKitWebViewPrivate* priv = webView->priv; + + priv->children.add(widget); + gtk_widget_set_parent(widget, GTK_WIDGET(container)); +} + +static void webkit_web_view_container_remove(GtkContainer* container, GtkWidget* widget) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(container); + WebKitWebViewPrivate* priv = webView->priv; + + if (priv->children.contains(widget)) { + gtk_widget_unparent(widget); + priv->children.remove(widget); + } +} + +static void webkit_web_view_container_forall(GtkContainer* container, gboolean, GtkCallback callback, gpointer callbackData) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(container); + WebKitWebViewPrivate* priv = webView->priv; + + HashSet<GtkWidget*> children = priv->children; + HashSet<GtkWidget*>::const_iterator end = children.end(); + for (HashSet<GtkWidget*>::const_iterator current = children.begin(); current != end; ++current) + (*callback)(*current, callbackData); +} + +static WebKitWebView* webkit_web_view_real_create_web_view(WebKitWebView*, WebKitWebFrame*) +{ + return 0; +} + +static gboolean webkit_web_view_real_web_view_ready(WebKitWebView*) +{ + return FALSE; +} + +static gboolean webkit_web_view_real_close_web_view(WebKitWebView*) +{ + return FALSE; +} + +static WebKitNavigationResponse webkit_web_view_real_navigation_requested(WebKitWebView*, WebKitWebFrame*, WebKitNetworkRequest*) +{ + return WEBKIT_NAVIGATION_RESPONSE_ACCEPT; +} + +static void webkit_web_view_real_window_object_cleared(WebKitWebView*, WebKitWebFrame*, JSGlobalContextRef context, JSObjectRef window_object) +{ + notImplemented(); +} + +static gchar* webkit_web_view_real_choose_file(WebKitWebView*, WebKitWebFrame*, const gchar* old_name) +{ + notImplemented(); + return g_strdup(old_name); +} + +typedef enum { + WEBKIT_SCRIPT_DIALOG_ALERT, + WEBKIT_SCRIPT_DIALOG_CONFIRM, + WEBKIT_SCRIPT_DIALOG_PROMPT + } WebKitScriptDialogType; + +static gboolean webkit_web_view_script_dialog(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, WebKitScriptDialogType type, const gchar* defaultValue, gchar** value) +{ + GtkMessageType messageType; + GtkButtonsType buttons; + gint defaultResponse; + GtkWidget* window; + GtkWidget* dialog; + GtkWidget* entry = 0; + gboolean didConfirm = FALSE; + + switch (type) { + case WEBKIT_SCRIPT_DIALOG_ALERT: + messageType = GTK_MESSAGE_WARNING; + buttons = GTK_BUTTONS_CLOSE; + defaultResponse = GTK_RESPONSE_CLOSE; + break; + case WEBKIT_SCRIPT_DIALOG_CONFIRM: + messageType = GTK_MESSAGE_QUESTION; + buttons = GTK_BUTTONS_OK_CANCEL; + defaultResponse = GTK_RESPONSE_OK; + break; + case WEBKIT_SCRIPT_DIALOG_PROMPT: + messageType = GTK_MESSAGE_QUESTION; + buttons = GTK_BUTTONS_OK_CANCEL; + defaultResponse = GTK_RESPONSE_OK; + break; + default: + g_warning("Unknown value for WebKitScriptDialogType."); + return FALSE; + } + + window = gtk_widget_get_toplevel(GTK_WIDGET(webView)); + dialog = gtk_message_dialog_new(gtk_widget_is_toplevel(window) ? GTK_WINDOW(window) : 0, GTK_DIALOG_DESTROY_WITH_PARENT, messageType, buttons, "%s", message); + gchar* title = g_strconcat("JavaScript - ", webkit_web_frame_get_uri(frame), NULL); + gtk_window_set_title(GTK_WINDOW(dialog), title); + g_free(title); + + if (type == WEBKIT_SCRIPT_DIALOG_PROMPT) { + entry = gtk_entry_new(); + gtk_entry_set_text(GTK_ENTRY(entry), defaultValue); + gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), entry); + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + gtk_widget_show(entry); + } + + gtk_dialog_set_default_response(GTK_DIALOG(dialog), defaultResponse); + gint response = gtk_dialog_run(GTK_DIALOG(dialog)); + + switch (response) { + case GTK_RESPONSE_OK: + didConfirm = TRUE; + if (entry) + *value = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry))); + break; + case GTK_RESPONSE_CANCEL: + didConfirm = FALSE; + break; + + } + gtk_widget_destroy(GTK_WIDGET(dialog)); + return didConfirm; +} + +static gboolean webkit_web_view_real_script_alert(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message) +{ + webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_ALERT, 0, 0); + return TRUE; +} + +static gboolean webkit_web_view_real_script_confirm(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, gboolean* didConfirm) +{ + *didConfirm = webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_CONFIRM, 0, 0); + return TRUE; +} + +static gboolean webkit_web_view_real_script_prompt(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, const gchar* defaultValue, gchar** value) +{ + if (!webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_PROMPT, defaultValue, value)) + *value = NULL; + return TRUE; +} + +static gboolean webkit_web_view_real_console_message(WebKitWebView* webView, const gchar* message, unsigned int line, const gchar* sourceId) +{ + g_message("console message: %s @%d: %s\n", sourceId, line, message); + return TRUE; +} + +static void webkit_web_view_real_select_all(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("SelectAll").execute(); +} + +static void webkit_web_view_real_cut_clipboard(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("Cut").execute(); +} + +static void webkit_web_view_real_copy_clipboard(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("Copy").execute(); +} + +static void webkit_web_view_real_undo(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("Undo").execute(); +} + +static void webkit_web_view_real_redo(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("Redo").execute(); +} + +static gboolean webkit_web_view_real_move_cursor (WebKitWebView* webView, GtkMovementStep step, gint count) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW (webView), FALSE); + g_return_val_if_fail(step == GTK_MOVEMENT_VISUAL_POSITIONS || + step == GTK_MOVEMENT_DISPLAY_LINES || + step == GTK_MOVEMENT_PAGES || + step == GTK_MOVEMENT_BUFFER_ENDS, FALSE); + g_return_val_if_fail(count == 1 || count == -1, FALSE); + + ScrollDirection direction; + ScrollGranularity granularity; + + switch (step) { + case GTK_MOVEMENT_DISPLAY_LINES: + granularity = ScrollByLine; + if (count == 1) + direction = ScrollDown; + else + direction = ScrollUp; + break; + case GTK_MOVEMENT_VISUAL_POSITIONS: + granularity = ScrollByLine; + if (count == 1) + direction = ScrollRight; + else + direction = ScrollLeft; + break; + case GTK_MOVEMENT_PAGES: + granularity = ScrollByPage; + if (count == 1) + direction = ScrollDown; + else + direction = ScrollUp; + break; + case GTK_MOVEMENT_BUFFER_ENDS: + granularity = ScrollByDocument; + if (count == 1) + direction = ScrollDown; + else + direction = ScrollUp; + break; + default: + g_assert_not_reached(); + return false; + } + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + if (!frame->eventHandler()->scrollOverflow(direction, granularity)) + frame->view()->scroll(direction, granularity); + + return true; +} + +static void webkit_web_view_real_paste_clipboard(WebKitWebView* webView) +{ + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->command("Paste").execute(); +} + +static gboolean webkit_web_view_real_should_allow_editing_action(WebKitWebView*) +{ + return TRUE; +} + +static void webkit_web_view_dispose(GObject* object) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(object); + WebKitWebViewPrivate* priv = webView->priv; + + priv->disposing = TRUE; + + // These smart pointers are cleared manually, because some cleanup operations are + // very sensitive to their value. We may crash if these are done in the wrong order. + priv->horizontalAdjustment.clear(); + priv->verticalAdjustment.clear(); + priv->backForwardList.clear(); + + if (priv->corePage) { + webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object)); + core(priv->mainFrame)->loader()->detachFromParent(); + delete priv->corePage; + priv->corePage = 0; + } + + if (priv->webSettings) { + g_signal_handlers_disconnect_by_func(priv->webSettings.get(), (gpointer)webkit_web_view_settings_notify, webView); + priv->webSettings.clear(); + } + + if (priv->currentMenu) { + gtk_widget_destroy(GTK_WIDGET(priv->currentMenu)); + priv->currentMenu = 0; + } + + priv->webInspector.clear(); + priv->viewportAttributes.clear(); + priv->webWindowFeatures.clear(); + priv->mainResource.clear(); + priv->subResources.clear(); + + HashMap<GdkDragContext*, DroppingContext*>::iterator endDroppingContexts = priv->droppingContexts.end(); + for (HashMap<GdkDragContext*, DroppingContext*>::iterator iter = priv->droppingContexts.begin(); iter != endDroppingContexts; ++iter) + delete (iter->second); + priv->droppingContexts.clear(); + + G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object); +} + +static void webkit_web_view_finalize(GObject* object) +{ + // We need to manually call the destructor here, since this object's memory is managed + // by GLib. This calls all C++ members' destructors and prevents memory leaks. + WEBKIT_WEB_VIEW(object)->priv->~WebKitWebViewPrivate(); + G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object); +} + +static gboolean webkit_signal_accumulator_object_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy) +{ + gpointer newWebView = g_value_get_object(handlerReturn); + g_value_set_object(returnAccu, newWebView); + + // Continue if we don't have a newWebView + return !newWebView; +} + +static gboolean webkit_navigation_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy) +{ + WebKitNavigationResponse navigationResponse = (WebKitNavigationResponse)g_value_get_enum(handlerReturn); + g_value_set_enum(returnAccu, navigationResponse); + + if (navigationResponse != WEBKIT_NAVIGATION_RESPONSE_ACCEPT) + return FALSE; + + return TRUE; +} + +static AtkObject* webkit_web_view_get_accessible(GtkWidget* widget) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + if (!core(webView)) + return 0; + + AXObjectCache::enableAccessibility(); + + Frame* coreFrame = core(webView)->mainFrame(); + if (!coreFrame) + return 0; + + Document* doc = coreFrame->document(); + if (!doc) + return 0; + + AccessibilityObject* rootAccessible = doc->axObjectCache()->rootObject(); + if (!rootAccessible) + return 0; + + // We need to return the root accessibility object's first child + // to get to the actual ATK Object associated with the web view. + // See https://bugs.webkit.org/show_bug.cgi?id=51932 + AtkObject* axRoot = rootAccessible->wrapper(); + if (!axRoot || !ATK_IS_OBJECT(axRoot)) + return 0; + + AtkObject* axWebView = atk_object_ref_accessible_child(ATK_OBJECT(axRoot), 0); + if (!axWebView || !ATK_IS_OBJECT(axWebView)) + return 0; + + // We don't want the extra reference returned by ref_accessible_child. + g_object_unref(axWebView); + return axWebView; +} + +static gdouble webViewGetDPI(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + WebKitWebSettings* webSettings = priv->webSettings.get(); + gboolean enforce96DPI; + g_object_get(webSettings, "enforce-96-dpi", &enforce96DPI, NULL); + if (enforce96DPI) + return 96.0; + + gdouble DPI = defaultDPI; + GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default(); + if (screen) { + DPI = gdk_screen_get_resolution(screen); + // gdk_screen_get_resolution() returns -1 when no DPI is set. + if (DPI == -1) + DPI = defaultDPI; + } + ASSERT(DPI > 0); + return DPI; +} + +static void webkit_web_view_screen_changed(GtkWidget* widget, GdkScreen* previousScreen) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + if (priv->disposing) + return; + + WebKitWebSettings* webSettings = priv->webSettings.get(); + Settings* settings = core(webView)->settings(); + gdouble DPI = webViewGetDPI(webView); + + guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize; + + g_object_get(webSettings, + "default-font-size", &defaultFontSize, + "default-monospace-font-size", &defaultMonospaceFontSize, + "minimum-font-size", &minimumFontSize, + "minimum-logical-font-size", &minimumLogicalFontSize, + NULL); + + settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI); + settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI); + settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI); + settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI); +} + +static IntPoint globalPointForClientPoint(GdkWindow* window, const IntPoint& clientPoint) +{ + int x, y; + gdk_window_get_origin(window, &x, &y); + return clientPoint + IntSize(x, y); +} + + +static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + // This might happen if a drag is still in progress after a WebKitWebView + // is disposed and before it is finalized. + if (!priv->draggingDataObjects.contains(context)) + return; + + priv->draggingDataObjects.remove(context); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + if (!frame) + return; + + GOwnPtr<GdkEvent> event(gdk_event_new(GDK_BUTTON_RELEASE)); + int x, y, xRoot, yRoot; + GdkModifierType modifiers = static_cast<GdkModifierType>(0); +#ifdef GTK_API_VERSION_2 + GdkDisplay* display = gdk_display_get_default(); + gdk_display_get_pointer(display, 0, &xRoot, &yRoot, &modifiers); + event->button.window = gdk_display_get_window_at_pointer(display, &x, &y); +#else + GdkDevice* device = gdk_drag_context_get_device(context); + event->button.window = gdk_device_get_window_at_position(device, &x, &y); + gdk_device_get_position(device, 0, &xRoot, &yRoot); +#endif + + if (event->button.window) + g_object_ref(event->button.window); + event->button.x = x; + event->button.y = y; + event->button.x_root = xRoot; + event->button.y_root = yRoot; + event->button.state = modifiers; + + PlatformMouseEvent platformEvent(&event->button); + frame->eventHandler()->dragSourceEndedAt(platformEvent, gdkDragActionToDragOperation(gdk_drag_context_get_selected_action(context))); +} + +static void webkit_web_view_drag_data_get(GtkWidget* widget, GdkDragContext* context, GtkSelectionData* selectionData, guint info, guint) +{ + WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW(widget)->priv; + + // This might happen if a drag is still in progress after a WebKitWebView + // is diposed and before it is finalized. + if (!priv->draggingDataObjects.contains(context)) + return; + + pasteboardHelperInstance()->fillSelectionData(selectionData, info, priv->draggingDataObjects.get(context).get()); +} + +static gboolean doDragLeaveLater(DroppingContext* context) +{ + WebKitWebView* webView = context->webView; + WebKitWebViewPrivate* priv = webView->priv; + + if (!priv->droppingContexts.contains(context->gdkContext)) + return FALSE; + + // If the view doesn't know about the drag yet (there are still pending data) + // requests, don't update it with information about the drag. + if (context->pendingDataRequests) + return FALSE; + + // Don't call dragExited if we have just received a drag-drop signal. This + // happens in the case of a successful drop onto the view. + if (!context->dropHappened) { + const IntPoint& position = context->lastMotionPosition; + DragData dragData(context->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(GTK_WIDGET(webView)), position), DragOperationNone); + core(webView)->dragController()->dragExited(&dragData); + } + + core(webView)->dragController()->dragEnded(); + priv->droppingContexts.remove(context->gdkContext); + delete context; + return FALSE; +} + +static void webkit_web_view_drag_leave(GtkWidget* widget, GdkDragContext* context, guint time) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + if (!priv->droppingContexts.contains(context)) + return; + + // During a drop GTK+ will fire a drag-leave signal right before firing + // the drag-drop signal. We want the actions for drag-leave to happen after + // those for drag-drop, so schedule them to happen asynchronously here. + g_timeout_add(0, reinterpret_cast<GSourceFunc>(doDragLeaveLater), priv->droppingContexts.get(context)); +} + +static gboolean webkit_web_view_drag_motion(GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + DroppingContext* droppingContext = 0; + IntPoint position = IntPoint(x, y); + if (!priv->droppingContexts.contains(context)) { + droppingContext = new DroppingContext; + droppingContext->webView = webView; + droppingContext->gdkContext = context; + droppingContext->dataObject = WebCore::DataObjectGtk::create(); + droppingContext->dropHappened = false; + droppingContext->lastMotionPosition = position; + priv->droppingContexts.set(context, droppingContext); + + Vector<GdkAtom> acceptableTargets(pasteboardHelperInstance()->dropAtomsForContext(widget, context)); + droppingContext->pendingDataRequests = acceptableTargets.size(); + for (size_t i = 0; i < acceptableTargets.size(); i++) + gtk_drag_get_data(widget, context, acceptableTargets.at(i), time); + } else { + droppingContext = priv->droppingContexts.get(context); + droppingContext->lastMotionPosition = position; + } + + // Don't send any drag information to WebCore until we've retrieved all + // the data for this drag operation. Otherwise we'd have to block to wait + // for the drag's data. + ASSERT(droppingContext); + if (droppingContext->pendingDataRequests > 0) + return TRUE; + + DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context))); + DragOperation operation = core(webView)->dragController()->dragUpdated(&dragData); + gdk_drag_status(context, dragOperationToSingleGdkDragAction(operation), time); + + return TRUE; +} + +static void webkit_web_view_drag_data_received(GtkWidget* widget, GdkDragContext* context, gint x, gint y, GtkSelectionData* selectionData, guint info, guint time) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + if (!priv->droppingContexts.contains(context)) + return; + + DroppingContext* droppingContext = priv->droppingContexts.get(context); + droppingContext->pendingDataRequests--; + pasteboardHelperInstance()->fillDataObjectFromDropData(selectionData, info, droppingContext->dataObject.get()); + + if (droppingContext->pendingDataRequests) + return; + + // The coordinates passed to drag-data-received signal are sometimes + // inaccurate in DRT, so use the coordinates of the last motion event. + const IntPoint& position = droppingContext->lastMotionPosition; + + // If there are no more pending requests, start sending dragging data to WebCore. + DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context))); + DragOperation operation = core(webView)->dragController()->dragEntered(&dragData); + gdk_drag_status(context, dragOperationToSingleGdkDragAction(operation), time); +} + +static gboolean webkit_web_view_drag_drop(GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + WebKitWebViewPrivate* priv = webView->priv; + + if (!priv->droppingContexts.contains(context)) + return FALSE; + + DroppingContext* droppingContext = priv->droppingContexts.get(context); + droppingContext->dropHappened = true; + + IntPoint position(x, y); + DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context))); + core(webView)->dragController()->performDrag(&dragData); + + gtk_drag_finish(context, TRUE, FALSE, time); + return TRUE; +} + +#if GTK_CHECK_VERSION(2, 12, 0) +static gboolean webkit_web_view_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip) +{ + WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW(widget)->priv; + + if (keyboard_mode) { + WebKitWebView* webView = WEBKIT_WEB_VIEW(widget); + + // Get the title of the current focused element. + Frame* coreFrame = core(webView)->focusController()->focusedOrMainFrame(); + if (!coreFrame) + return FALSE; + + Node* node = getFocusedNode(coreFrame); + if (!node) + return FALSE; + + for (Node* titleNode = node; titleNode; titleNode = titleNode->parentNode()) { + if (titleNode->isElementNode()) { + String title = static_cast<Element*>(titleNode)->title(); + if (!title.isEmpty()) { + if (FrameView* view = coreFrame->view()) { + GdkRectangle area = view->contentsToWindow(node->getRect()); + gtk_tooltip_set_tip_area(tooltip, &area); + } + gtk_tooltip_set_text(tooltip, title.utf8().data()); + + return TRUE; + } + } + } + + return FALSE; + } + + if (priv->tooltipText.length() > 0) { + if (!keyboard_mode) { + if (!priv->tooltipArea.isEmpty()) { + GdkRectangle area = priv->tooltipArea; + gtk_tooltip_set_tip_area(tooltip, &area); + } else + gtk_tooltip_set_tip_area(tooltip, 0); + } + gtk_tooltip_set_text(tooltip, priv->tooltipText.data()); + return TRUE; + } + + return FALSE; +} + +static gboolean webkit_web_view_show_help(GtkWidget* widget, GtkWidgetHelpType help_type) +{ + if (help_type == GTK_WIDGET_HELP_TOOLTIP) + gtk_widget_set_has_tooltip(widget, TRUE); + + return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->show_help(widget, help_type); +} +#endif + +static GtkIMContext* webkit_web_view_get_im_context(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + return GTK_IM_CONTEXT(webView->priv->imContext.get()); +} + +static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) +{ + GtkBindingSet* binding_set; + + webkitInit(); + + /* + * Signals + */ + + /** + * WebKitWebView::create-web-view: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame + * + * Emitted when the creation of a new window is requested. + * If this signal is handled the signal handler should return the + * newly created #WebKitWebView. + * + * The new #WebKitWebView should not be displayed to the user + * until the #WebKitWebView::web-view-ready signal is emitted. + * + * The signal handlers should not try to deal with the reference count for + * the new #WebKitWebView. The widget to which the widget is added will + * handle that. + * + * Return value: (transfer full): a newly allocated #WebKitWebView, or %NULL + * + * Since: 1.0.3 + */ + webkit_web_view_signals[CREATE_WEB_VIEW] = g_signal_new("create-web-view", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (WebKitWebViewClass, create_web_view), + webkit_signal_accumulator_object_handled, + NULL, + webkit_marshal_OBJECT__OBJECT, + WEBKIT_TYPE_WEB_VIEW , 1, + WEBKIT_TYPE_WEB_FRAME); + + /** + * WebKitWebView::web-view-ready: + * @webView: the object on which the signal is emitted + * + * Emitted after #WebKitWebView::create-web-view when the new #WebKitWebView + * should be displayed to the user. When this signal is emitted + * all the information about how the window should look, including + * size, position, whether the location, status and scroll bars + * should be displayed, is already set on the + * #WebKitWebWindowFeatures object contained by the #WebKitWebView. + * + * Notice that some of that information may change during the life + * time of the window, so you may want to connect to the ::notify + * signal of the #WebKitWebWindowFeatures object to handle those. + * + * Return value: %TRUE to stop handlers from being invoked for the event or + * %FALSE to propagate the event furter + * + * Since: 1.0.3 + */ + webkit_web_view_signals[WEB_VIEW_READY] = g_signal_new("web-view-ready", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (WebKitWebViewClass, web_view_ready), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN, 0); + + /** + * WebKitWebView::close-web-view: + * @webView: the object on which the signal is emitted + * + * Emitted when closing a #WebKitWebView is requested. This occurs when a + * call is made from JavaScript's window.close function. The default + * signal handler does not do anything. It is the owner's responsibility + * to hide or delete the web view, if necessary. + * + * Return value: %TRUE to stop handlers from being invoked for the event or + * %FALSE to propagate the event furter + * + * Since: 1.1.11 + */ + webkit_web_view_signals[CLOSE_WEB_VIEW] = g_signal_new("close-web-view", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (WebKitWebViewClass, close_web_view), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN, 0); + + /** + * WebKitWebView::navigation-requested: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame that required the navigation + * @request: a #WebKitNetworkRequest + * + * Emitted when @frame requests a navigation to another page. + * + * Return value: a #WebKitNavigationResponse + * + * Deprecated: Use WebKitWebView::navigation-policy-decision-requested + * instead + */ + webkit_web_view_signals[NAVIGATION_REQUESTED] = g_signal_new("navigation-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (WebKitWebViewClass, navigation_requested), + webkit_navigation_request_handled, + NULL, + webkit_marshal_ENUM__OBJECT_OBJECT, + WEBKIT_TYPE_NAVIGATION_RESPONSE, 2, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_NETWORK_REQUEST); + + /** + * WebKitWebView::new-window-policy-decision-requested: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame that required the navigation + * @request: a #WebKitNetworkRequest + * @navigation_action: a #WebKitWebNavigationAction + * @policy_decision: a #WebKitWebPolicyDecision + * + * Emitted when @frame requests opening a new window. With this + * signal the browser can use the context of the request to decide + * about the new window. If the request is not handled the default + * behavior is to allow opening the new window to load the URI, + * which will cause a create-web-view signal emission where the + * browser handles the new window action but without information + * of the context that caused the navigation. The following + * navigation-policy-decision-requested emissions will load the + * page after the creation of the new window just with the + * information of this new navigation context, without any + * information about the action that made this new window to be + * opened. + * + * Notice that if you return TRUE, meaning that you handled the + * signal, you are expected to have decided what to do, by calling + * webkit_web_policy_decision_ignore(), + * webkit_web_policy_decision_use(), or + * webkit_web_policy_decision_download() on the @policy_decision + * object. + * + * Return value: %TRUE if a decision was made, %FALSE to have the + * default behavior apply + * + * Since: 1.1.4 + */ + webkit_web_view_signals[NEW_WINDOW_POLICY_DECISION_REQUESTED] = + g_signal_new("new-window-policy-decision-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_OBJECT_OBJECT_OBJECT, + G_TYPE_BOOLEAN, 4, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_NETWORK_REQUEST, + WEBKIT_TYPE_WEB_NAVIGATION_ACTION, + WEBKIT_TYPE_WEB_POLICY_DECISION); + + /** + * WebKitWebView::navigation-policy-decision-requested: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame that required the navigation + * @request: a #WebKitNetworkRequest + * @navigation_action: a #WebKitWebNavigationAction + * @policy_decision: a #WebKitWebPolicyDecision + * + * Emitted when @frame requests a navigation to another page. + * If this signal is not handled, the default behavior is to allow the + * navigation. + * + * Notice that if you return TRUE, meaning that you handled the + * signal, you are expected to have decided what to do, by calling + * webkit_web_policy_decision_ignore(), + * webkit_web_policy_decision_use(), or + * webkit_web_policy_decision_download() on the @policy_decision + * object. + * + * Return value: %TRUE if a decision was made, %FALSE to have the + * default behavior apply + * + * Since: 1.0.3 + */ + webkit_web_view_signals[NAVIGATION_POLICY_DECISION_REQUESTED] = g_signal_new("navigation-policy-decision-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_OBJECT_OBJECT_OBJECT, + G_TYPE_BOOLEAN, 4, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_NETWORK_REQUEST, + WEBKIT_TYPE_WEB_NAVIGATION_ACTION, + WEBKIT_TYPE_WEB_POLICY_DECISION); + + /** + * WebKitWebView::mime-type-policy-decision-requested: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame that required the policy decision + * @request: a WebKitNetworkRequest + * @mimetype: the MIME type attempted to load + * @policy_decision: a #WebKitWebPolicyDecision + * + * Decide whether or not to display the given MIME type. If this + * signal is not handled, the default behavior is to show the + * content of the requested URI if WebKit can show this MIME + * type and the content disposition is not a download; if WebKit + * is not able to show the MIME type nothing happens. + * + * Notice that if you return TRUE, meaning that you handled the + * signal, you are expected to be aware of the "Content-Disposition" + * header. A value of "attachment" usually indicates a download + * regardless of the MIME type, see also + * soup_message_headers_get_content_disposition(). And you must call + * webkit_web_policy_decision_ignore(), + * webkit_web_policy_decision_use(), or + * webkit_web_policy_decision_download() on the @policy_decision + * object. + * + * Return value: %TRUE if a decision was made, %FALSE to have the + * default behavior apply + * + * Since: 1.0.3 + */ + webkit_web_view_signals[MIME_TYPE_POLICY_DECISION_REQUESTED] = g_signal_new("mime-type-policy-decision-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_OBJECT_STRING_OBJECT, + G_TYPE_BOOLEAN, 4, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_NETWORK_REQUEST, + G_TYPE_STRING, + WEBKIT_TYPE_WEB_POLICY_DECISION); + + /** + * WebKitWebView::window-object-cleared: + * @webView: the object on which the signal is emitted + * @frame: the #WebKitWebFrame to which @window_object belongs + * @context: the #JSGlobalContextRef holding the global object and other + * execution state; equivalent to the return value of + * webkit_web_frame_get_global_context(@frame) + * @window_object: the #JSObjectRef representing the frame's JavaScript + * window object + * + * Emitted when the JavaScript window object in a #WebKitWebFrame has been + * cleared in preparation for a new load. This is the preferred place to + * set custom properties on the window object using the JavaScriptCore API. + */ + webkit_web_view_signals[WINDOW_OBJECT_CLEARED] = g_signal_new("window-object-cleared", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (WebKitWebViewClass, window_object_cleared), + NULL, + NULL, + webkit_marshal_VOID__OBJECT_POINTER_POINTER, + G_TYPE_NONE, 3, + WEBKIT_TYPE_WEB_FRAME, + G_TYPE_POINTER, + G_TYPE_POINTER); + + /** + * WebKitWebView::download-requested: + * @webView: the object on which the signal is emitted + * @download: a #WebKitDownload object that lets you control the + * download process + * + * A new Download is being requested. By default, if the signal is + * not handled, the download is cancelled. If you handle the download + * and call webkit_download_set_destination_uri(), it will be + * started for you. If you need to set the destination asynchronously + * you are responsible for starting or cancelling it yourself. + * + * If you intend to handle downloads yourself rather than using + * the #WebKitDownload helper object you must handle this signal, + * and return %FALSE. + * + * Also, keep in mind that the default policy for WebKitGTK+ is to + * ignore files with a MIME type that it does not know how to + * handle, which means this signal won't be emitted in the default + * setup. One way to trigger downloads is to connect to + * WebKitWebView::mime-type-policy-decision-requested and call + * webkit_web_policy_decision_download() on the + * #WebKitWebPolicyDecision in the parameter list for the kind of + * files you want your application to download (a common solution + * is to download anything that WebKit can't handle, which you can + * figure out by using webkit_web_view_can_show_mime_type()). + * + * Return value: TRUE if the download should be performed, %FALSE to + * cancel it + * + * Since: 1.1.2 + */ + webkit_web_view_signals[DOWNLOAD_REQUESTED] = g_signal_new("download-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT, + G_TYPE_BOOLEAN, 1, + G_TYPE_OBJECT); + + /** + * WebKitWebView::load-started: + * @webView: the object on which the signal is emitted + * @frame: the frame going to do the load + * + * When a #WebKitWebFrame begins to load this signal is emitted. + * + * Deprecated: Use the "load-status" property instead. + */ + webkit_web_view_signals[LOAD_STARTED] = g_signal_new("load-started", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + /** + * WebKitWebView::load-committed: + * @webView: the object on which the signal is emitted + * @frame: the main frame that received the first data + * + * When a #WebKitWebFrame loaded the first data this signal is emitted. + * + * Deprecated: Use the "load-status" property instead. + */ + webkit_web_view_signals[LOAD_COMMITTED] = g_signal_new("load-committed", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + + /** + * WebKitWebView::load-progress-changed: + * @webView: the #WebKitWebView + * @progress: the global progress + * + * Deprecated: Use the "progress" property instead. + */ + webkit_web_view_signals[LOAD_PROGRESS_CHANGED] = g_signal_new("load-progress-changed", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, 1, + G_TYPE_INT); + + /** + * WebKitWebView::load-error + * @webView: the object on which the signal is emitted + * @web_frame: the #WebKitWebFrame + * @uri: the URI that triggered the error + * @web_error: the #GError that was triggered + * + * An error occurred while loading. By default, if the signal is not + * handled, the @web_view will display a stock error page. You need to + * handle the signal if you want to provide your own error page. + * + * Since: 1.1.6 + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + */ + webkit_web_view_signals[LOAD_ERROR] = g_signal_new("load-error", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST), + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_STRING_POINTER, + G_TYPE_BOOLEAN, 3, + WEBKIT_TYPE_WEB_FRAME, + G_TYPE_STRING, + G_TYPE_POINTER); + + /** + * WebKitWebView::load-finished: + * @webView: the #WebKitWebView + * @frame: the #WebKitWebFrame + * + * Deprecated: Use the "load-status" property instead. + */ + webkit_web_view_signals[LOAD_FINISHED] = g_signal_new("load-finished", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + /** + * WebKitWebView::onload-event: + * @webView: the object on which the signal is emitted + * @frame: the frame + * + * When a #WebKitWebFrame receives an onload event this signal is emitted. + */ + webkit_web_view_signals[ONLOAD_EVENT] = g_signal_new("onload-event", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + /** + * WebKitWebView::title-changed: + * @webView: the object on which the signal is emitted + * @frame: the main frame + * @title: the new title + * + * When a #WebKitWebFrame changes the document title this signal is emitted. + * + * Deprecated: 1.1.4: Use "notify::title" instead. + */ + webkit_web_view_signals[TITLE_CHANGED] = g_signal_new("title-changed", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + webkit_marshal_VOID__OBJECT_STRING, + G_TYPE_NONE, 2, + WEBKIT_TYPE_WEB_FRAME, + G_TYPE_STRING); + + /** + * WebKitWebView::hovering-over-link: + * @webView: the object on which the signal is emitted + * @title: the link's title + * @uri: the URI the link points to + * + * When the cursor is over a link, this signal is emitted. + */ + webkit_web_view_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + webkit_marshal_VOID__STRING_STRING, + G_TYPE_NONE, 2, + G_TYPE_STRING, + G_TYPE_STRING); + + /** + * WebKitWebView::populate-popup: + * @webView: the object on which the signal is emitted + * @menu: the context menu + * + * When a context menu is about to be displayed this signal is emitted. + * + * Add menu items to #menu to extend the context menu. + */ + webkit_web_view_signals[POPULATE_POPUP] = g_signal_new("populate-popup", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + GTK_TYPE_MENU); + + /** + * WebKitWebView::print-requested + * @webView: the object in which the signal is emitted + * @web_frame: the frame that is requesting to be printed + * + * Emitted when printing is requested by the frame, usually + * because of a javascript call. When handling this signal you + * should call webkit_web_frame_print_full() or + * webkit_web_frame_print() to do the actual printing. + * + * The default handler will present a print dialog and carry a + * print operation. Notice that this means that if you intend to + * ignore a print request you must connect to this signal, and + * return %TRUE. + * + * Return value: %TRUE if the print request has been handled, %FALSE if + * the default handler should run + * + * Since: 1.1.5 + */ + webkit_web_view_signals[PRINT_REQUESTED] = g_signal_new("print-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT, + G_TYPE_BOOLEAN, 1, + WEBKIT_TYPE_WEB_FRAME); + + webkit_web_view_signals[STATUS_BAR_TEXT_CHANGED] = g_signal_new("status-bar-text-changed", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + /** + * WebKitWebView::icon-loaded: + * @webView: the object on which the signal is emitted + * @icon_uri: the URI for the icon + * + * This signal is emitted when the main frame has got a favicon. + * + * Since: 1.1.18 + */ + webkit_web_view_signals[ICON_LOADED] = g_signal_new("icon-loaded", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + + /** + * WebKitWebView::console-message: + * @webView: the object on which the signal is emitted + * @message: the message text + * @line: the line where the error occured + * @source_id: the source id + * + * A JavaScript console message was created. + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + */ + webkit_web_view_signals[CONSOLE_MESSAGE] = g_signal_new("console-message", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(WebKitWebViewClass, console_message), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__STRING_INT_STRING, + G_TYPE_BOOLEAN, 3, + G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING); + + /** + * WebKitWebView::script-alert: + * @webView: the object on which the signal is emitted + * @frame: the relevant frame + * @message: the message text + * + * A JavaScript alert dialog was created. + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + */ + webkit_web_view_signals[SCRIPT_ALERT] = g_signal_new("script-alert", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(WebKitWebViewClass, script_alert), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_STRING, + G_TYPE_BOOLEAN, 2, + WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING); + + /** + * WebKitWebView::script-confirm: + * @webView: the object on which the signal is emitted + * @frame: the relevant frame + * @message: the message text + * @confirmed: whether the dialog has been confirmed + * + * A JavaScript confirm dialog was created, providing Yes and No buttons. + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + */ + webkit_web_view_signals[SCRIPT_CONFIRM] = g_signal_new("script-confirm", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(WebKitWebViewClass, script_confirm), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_STRING_POINTER, + G_TYPE_BOOLEAN, 3, + WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING, G_TYPE_POINTER); + + /** + * WebKitWebView::script-prompt: + * @webView: the object on which the signal is emitted + * @frame: the relevant frame + * @message: the message text + * @default: the default value + * @text: To be filled with the return value or NULL if the dialog was cancelled. + * + * A JavaScript prompt dialog was created, providing an entry to input text. + * + * Return value: %TRUE to stop other handlers from being invoked for the + * event. %FALSE to propagate the event further. + */ + webkit_web_view_signals[SCRIPT_PROMPT] = g_signal_new("script-prompt", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(WebKitWebViewClass, script_prompt), + g_signal_accumulator_true_handled, + NULL, + webkit_marshal_BOOLEAN__OBJECT_STRING_STRING_STRING, + G_TYPE_BOOLEAN, 4, + WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); + + /** + * WebKitWebView::select-all: + * @webView: the object which received the signal + * + * The #WebKitWebView::select-all signal is a keybinding signal which gets emitted to + * select the complete contents of the text view. + * + * The default bindings for this signal is Ctrl-a. + */ + webkit_web_view_signals[SELECT_ALL] = g_signal_new("select-all", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, select_all), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::cut-clipboard: + * @webView: the object which received the signal + * + * The #WebKitWebView::cut-clipboard signal is a keybinding signal which gets emitted to + * cut the selection to the clipboard. + * + * The default bindings for this signal are Ctrl-x and Shift-Delete. + */ + webkit_web_view_signals[CUT_CLIPBOARD] = g_signal_new("cut-clipboard", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, cut_clipboard), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::copy-clipboard: + * @webView: the object which received the signal + * + * The #WebKitWebView::copy-clipboard signal is a keybinding signal which gets emitted to + * copy the selection to the clipboard. + * + * The default bindings for this signal are Ctrl-c and Ctrl-Insert. + */ + webkit_web_view_signals[COPY_CLIPBOARD] = g_signal_new("copy-clipboard", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, copy_clipboard), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::paste-clipboard: + * @webView: the object which received the signal + * + * The #WebKitWebView::paste-clipboard signal is a keybinding signal which gets emitted to + * paste the contents of the clipboard into the Web view. + * + * The default bindings for this signal are Ctrl-v and Shift-Insert. + */ + webkit_web_view_signals[PASTE_CLIPBOARD] = g_signal_new("paste-clipboard", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, paste_clipboard), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::undo + * @webView: the object which received the signal + * + * The #WebKitWebView::undo signal is a keybinding signal which gets emitted to + * undo the last editing command. + * + * The default binding for this signal is Ctrl-z + * + * Since: 1.1.14 + */ + webkit_web_view_signals[UNDO] = g_signal_new("undo", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, undo), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::redo + * @webView: the object which received the signal + * + * The #WebKitWebView::redo signal is a keybinding signal which gets emitted to + * redo the last editing command. + * + * The default binding for this signal is Ctrl-Shift-z + * + * Since: 1.1.14 + */ + webkit_web_view_signals[REDO] = g_signal_new("redo", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, redo), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * WebKitWebView::move-cursor: + * @webView: the object which received the signal + * @step: the type of movement, one of #GtkMovementStep + * @count: an integer indicating the subtype of movement. Currently + * the permitted values are '1' = forward, '-1' = backwards. + * + * The #WebKitWebView::move-cursor will be emitted to apply the + * cursor movement described by its parameters to the @view. + * + * Return value: %TRUE or %FALSE + * + * Since: 1.1.4 + */ + webkit_web_view_signals[MOVE_CURSOR] = g_signal_new("move-cursor", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, move_cursor), + NULL, NULL, + webkit_marshal_BOOLEAN__ENUM_INT, + G_TYPE_BOOLEAN, 2, + GTK_TYPE_MOVEMENT_STEP, + G_TYPE_INT); + + /** + * WebKitWebView::create-plugin-widget: + * @webView: the object which received the signal + * @mime_type: the mimetype of the requested object + * @uri: the URI to load + * @param: a #GHashTable with additional attributes (strings) + * + * The #WebKitWebView::create-plugin-widget signal will be emitted to + * create a plugin widget for embed or object HTML tags. This + * allows to embed a GtkWidget as a plugin into HTML content. In + * case of a textual selection of the GtkWidget WebCore will attempt + * to set the property value of "webkit-widget-is-selected". This can + * be used to draw a visual indicator of the selection. + * + * Return value: (transfer full): a new #GtkWidget, or %NULL + * + * Since: 1.1.8 + */ + webkit_web_view_signals[PLUGIN_WIDGET] = g_signal_new("create-plugin-widget", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags) (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + webkit_signal_accumulator_object_handled, + NULL, + webkit_marshal_OBJECT__STRING_STRING_POINTER, + GTK_TYPE_WIDGET, 3, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_HASH_TABLE); + + /** + * WebKitWebView::database-quota-exceeded + * @webView: the object which received the signal + * @frame: the relevant frame + * @database: the #WebKitWebDatabase which exceeded the quota of its #WebKitSecurityOrigin + * + * The #WebKitWebView::database-quota-exceeded signal will be emitted when + * a Web Database exceeds the quota of its security origin. This signal + * may be used to increase the size of the quota before the originating + * operation fails. + * + * Since: 1.1.14 + */ + webkit_web_view_signals[DATABASE_QUOTA_EXCEEDED] = g_signal_new("database-quota-exceeded", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags) (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + NULL, NULL, + webkit_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, 2, + G_TYPE_OBJECT, G_TYPE_OBJECT); + + /** + * WebKitWebView::resource-request-starting: + * @webView: the object which received the signal + * @web_frame: the #WebKitWebFrame whose load dispatched this request + * @web_resource: an empty #WebKitWebResource object + * @request: the #WebKitNetworkRequest that will be dispatched + * @response: the #WebKitNetworkResponse representing the redirect + * response, if any + * + * Emitted when a request is about to be sent. You can modify the + * request while handling this signal. You can set the URI in the + * #WebKitNetworkRequest object itself, and add/remove/replace + * headers using the #SoupMessage object it carries, if it is + * present. See webkit_network_request_get_message(). Setting the + * request URI to "about:blank" will effectively cause the request + * to load nothing, and can be used to disable the loading of + * specific resources. + * + * Notice that information about an eventual redirect is available + * in @response's #SoupMessage, not in the #SoupMessage carried by + * the @request. If @response is %NULL, then this is not a + * redirected request. + * + * The #WebKitWebResource object will be the same throughout all + * the lifetime of the resource, but the contents may change from + * inbetween signal emissions. + * + * Since: 1.1.14 + */ + webkit_web_view_signals[RESOURCE_REQUEST_STARTING] = g_signal_new("resource-request-starting", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + NULL, NULL, + webkit_marshal_VOID__OBJECT_OBJECT_OBJECT_OBJECT, + G_TYPE_NONE, 4, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_WEB_RESOURCE, + WEBKIT_TYPE_NETWORK_REQUEST, + WEBKIT_TYPE_NETWORK_RESPONSE); + + /** + * WebKitWebView::geolocation-policy-decision-requested: + * @webView: the object on which the signal is emitted + * @frame: the frame that requests permission + * @policy_decision: a WebKitGeolocationPolicyDecision + * + * This signal is emitted when a @frame wants to obtain the user's + * location. The decision can be made asynchronously, but you must + * call g_object_ref() the @policy_decision, and return %TRUE if + * you are going to handle the request. To actually make the + * decision you need to call webkit_geolocation_policy_allow() or + * webkit_geolocation_policy_deny() on @policy_decision. + * + * Since: 1.1.23 + */ + webkit_web_view_signals[GEOLOCATION_POLICY_DECISION_REQUESTED] = g_signal_new("geolocation-policy-decision-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST), + 0, + NULL, NULL, + webkit_marshal_BOOLEAN__OBJECT_OBJECT, + G_TYPE_BOOLEAN, 2, + WEBKIT_TYPE_WEB_FRAME, + WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION); + + /** + * WebKitWebView::geolocation-policy-decision-cancelled: + * @webView: the object on which the signal is emitted + * @frame: the frame that cancels geolocation request. + * + * When a @frame wants to cancel geolocation permission it had requested + * before. + * + * Since: 1.1.23 + */ + webkit_web_view_signals[GEOLOCATION_POLICY_DECISION_CANCELLED] = g_signal_new("geolocation-policy-decision-cancelled", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST), + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + /* + * DOM-related signals. These signals are experimental, for now, + * and may change API and ABI. Their comments lack one * on + * purpose, to make them not be catched by gtk-doc. + */ + + /* + * WebKitWebView::document-load-finished + * @webView: the object which received the signal + * @web_frame: the #WebKitWebFrame whose load dispatched this request + * + * Emitted when the DOM document object load is finished for the + * given frame. + */ + webkit_web_view_signals[DOCUMENT_LOAD_FINISHED] = g_signal_new("document-load-finished", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + /* + * WebKitWebView::frame-created + * @webView: the object which received the signal + * @web_frame: the #WebKitWebFrame which was just created. + * + * Emitted when a WebKitWebView has created a new frame. This signal will + * be emitted for all sub-frames created during page load. It will not be + * emitted for the main frame, which originates in the WebKitWebView constructor + * and may be accessed at any time using webkit_web_view_get_main_frame. + * + * Since: 1.3.4 + */ + webkit_web_view_signals[FRAME_CREATED] = g_signal_new("frame-created", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_WEB_FRAME); + + webkit_web_view_signals[SHOULD_BEGIN_EDITING] = g_signal_new("should-begin-editing", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE); + + webkit_web_view_signals[SHOULD_END_EDITING] = g_signal_new("should-end-editing", G_TYPE_FROM_CLASS(webViewClass), + static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE); + + webkit_web_view_signals[SHOULD_INSERT_NODE] = g_signal_new("should-insert-node", G_TYPE_FROM_CLASS(webViewClass), + static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT_OBJECT_ENUM, G_TYPE_BOOLEAN, + 3, WEBKIT_TYPE_DOM_NODE, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_INSERT_ACTION); + + webkit_web_view_signals[SHOULD_INSERT_TEXT] = g_signal_new("should-insert-text", G_TYPE_FROM_CLASS(webViewClass), + static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__STRING_OBJECT_ENUM, G_TYPE_BOOLEAN, + 3, G_TYPE_STRING, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_INSERT_ACTION); + + webkit_web_view_signals[SHOULD_DELETE_RANGE] = g_signal_new("should-delete-range", G_TYPE_FROM_CLASS(webViewClass), + static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE); + + webkit_web_view_signals[SHOULD_SHOW_DELETE_INTERFACE_FOR_ELEMENT] = g_signal_new("should-show-delete-interface-for-element", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_HTML_ELEMENT); + + webkit_web_view_signals[SHOULD_CHANGE_SELECTED_RANGE] = g_signal_new("should-change-selected-range", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT_OBJECT_ENUM_BOOLEAN, G_TYPE_BOOLEAN, + 4, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_SELECTION_AFFINITY, G_TYPE_BOOLEAN); + + webkit_web_view_signals[SHOULD_APPLY_STYLE] = g_signal_new("should-apply-style", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0, + webkit_marshal_BOOLEAN__OBJECT_OBJECT, G_TYPE_BOOLEAN, + 2, WEBKIT_TYPE_DOM_CSS_STYLE_DECLARATION, WEBKIT_TYPE_DOM_RANGE); + + webkit_web_view_signals[EDITING_BEGAN] = g_signal_new("editing-began", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + + webkit_web_view_signals[USER_CHANGED_CONTENTS] = g_signal_new("user-changed-contents", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + + webkit_web_view_signals[EDITING_ENDED] = g_signal_new("editing-ended", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + + webkit_web_view_signals[SELECTION_CHANGED] = g_signal_new("selection-changed", + G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + + /* + * WebKitWebView::viewport-attributes-recompute-requested + * @web_view: the object which received the signal + * @viewport_attributes: the #WebKitViewportAttributes which has the viewport attributes. + * + * The #WebKitWebView::viewport-attributes-recompute-requested + * signal will be emitted when a page with a viewport meta tag + * loads and when webkit_viewport_attributes_recompute is called. + * + * The #WebKitViewportAttributes will have device size, available size, + * desktop width, and device DPI pre-filled by values that make sense + * for the current screen and widget, but you can override those values + * if you have special requirements (for instance, if you made your + * widget bigger than the available visible area, you should override + * the available-width and available-height properties to the actual + * visible area). + * + * Since: 1.3.8 + */ + webkit_web_view_signals[VIEWPORT_ATTRIBUTES_RECOMPUTE_REQUESTED] = g_signal_new("viewport-attributes-recompute-requested", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + 0, 0, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_VIEWPORT_ATTRIBUTES); + + /* + * WebKitWebView::viewport-attributes-changed + * @web_view: the object which received the signal + * @viewport_attributes: the #WebKitViewportAttributes which has the viewport attributes. + * + * The #WebKitWebView::viewport-attributes-changed signal will be emitted + * after the emission of #WebKitWebView::viewport-attributes-recompute-requested + * and the subsequent viewport attribute recomputation. At this point, + * if the #WebKitViewportAttributes are valid, the viewport attributes are available. + * + * Since: 1.3.8 + */ + webkit_web_view_signals[VIEWPORT_ATTRIBUTES_CHANGED] = g_signal_new("viewport-attributes-changed", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + 0, 0, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + WEBKIT_TYPE_VIEWPORT_ATTRIBUTES); + + /* + * implementations of virtual methods + */ + webViewClass->create_web_view = webkit_web_view_real_create_web_view; + webViewClass->web_view_ready = webkit_web_view_real_web_view_ready; + webViewClass->close_web_view = webkit_web_view_real_close_web_view; + webViewClass->navigation_requested = webkit_web_view_real_navigation_requested; + webViewClass->window_object_cleared = webkit_web_view_real_window_object_cleared; + webViewClass->choose_file = webkit_web_view_real_choose_file; + webViewClass->script_alert = webkit_web_view_real_script_alert; + webViewClass->script_confirm = webkit_web_view_real_script_confirm; + webViewClass->script_prompt = webkit_web_view_real_script_prompt; + webViewClass->console_message = webkit_web_view_real_console_message; + webViewClass->select_all = webkit_web_view_real_select_all; + webViewClass->cut_clipboard = webkit_web_view_real_cut_clipboard; + webViewClass->copy_clipboard = webkit_web_view_real_copy_clipboard; + webViewClass->paste_clipboard = webkit_web_view_real_paste_clipboard; + webViewClass->undo = webkit_web_view_real_undo; + webViewClass->redo = webkit_web_view_real_redo; + webViewClass->move_cursor = webkit_web_view_real_move_cursor; + webViewClass->should_allow_editing_action = webkit_web_view_real_should_allow_editing_action; + + GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass); + objectClass->dispose = webkit_web_view_dispose; + objectClass->finalize = webkit_web_view_finalize; + objectClass->get_property = webkit_web_view_get_property; + objectClass->set_property = webkit_web_view_set_property; + + GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(webViewClass); + widgetClass->realize = webkit_web_view_realize; +#ifdef GTK_API_VERSION_2 + widgetClass->expose_event = webkit_web_view_expose_event; +#else + widgetClass->draw = webkit_web_view_draw; +#endif + widgetClass->key_press_event = webkit_web_view_key_press_event; + widgetClass->key_release_event = webkit_web_view_key_release_event; + widgetClass->button_press_event = webkit_web_view_button_press_event; + widgetClass->button_release_event = webkit_web_view_button_release_event; + widgetClass->motion_notify_event = webkit_web_view_motion_event; + widgetClass->scroll_event = webkit_web_view_scroll_event; + widgetClass->size_allocate = webkit_web_view_size_allocate; +#ifdef GTK_API_VERSION_2 + widgetClass->size_request = webkit_web_view_size_request; +#else + widgetClass->get_preferred_width = webkit_web_view_get_preferred_width; + widgetClass->get_preferred_height = webkit_web_view_get_preferred_height; +#endif + widgetClass->popup_menu = webkit_web_view_popup_menu_handler; + widgetClass->grab_focus = webkit_web_view_grab_focus; + widgetClass->focus_in_event = webkit_web_view_focus_in_event; + widgetClass->focus_out_event = webkit_web_view_focus_out_event; + widgetClass->get_accessible = webkit_web_view_get_accessible; + widgetClass->screen_changed = webkit_web_view_screen_changed; + widgetClass->drag_end = webkit_web_view_drag_end; + widgetClass->drag_data_get = webkit_web_view_drag_data_get; + widgetClass->drag_motion = webkit_web_view_drag_motion; + widgetClass->drag_leave = webkit_web_view_drag_leave; + widgetClass->drag_drop = webkit_web_view_drag_drop; + widgetClass->drag_data_received = webkit_web_view_drag_data_received; +#if GTK_CHECK_VERSION(2, 12, 0) + widgetClass->query_tooltip = webkit_web_view_query_tooltip; + widgetClass->show_help = webkit_web_view_show_help; +#endif + + GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webViewClass); + containerClass->add = webkit_web_view_container_add; + containerClass->remove = webkit_web_view_container_remove; + containerClass->forall = webkit_web_view_container_forall; + + /* + * make us scrollable (e.g. addable to a GtkScrolledWindow) + */ +#ifdef GTK_API_VERSION_2 + webViewClass->set_scroll_adjustments = webkit_web_view_set_scroll_adjustments; + GTK_WIDGET_CLASS(webViewClass)->set_scroll_adjustments_signal = g_signal_new("set-scroll-adjustments", + G_TYPE_FROM_CLASS(webViewClass), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + G_STRUCT_OFFSET(WebKitWebViewClass, set_scroll_adjustments), + NULL, NULL, + webkit_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, 2, + GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); +#else + g_object_class_override_property(objectClass, PROP_HADJUSTMENT, "hadjustment"); + g_object_class_override_property(objectClass, PROP_VADJUSTMENT, "vadjustment"); + g_object_class_override_property(objectClass, PROP_HSCROLL_POLICY, "hscroll-policy"); + g_object_class_override_property(objectClass, PROP_VSCROLL_POLICY, "vscroll-policy"); +#endif + + /* + * Key bindings + */ + + binding_set = gtk_binding_set_by_class(webViewClass); + + gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK, + "select_all", 0); + + /* Cut/copy/paste */ + + gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, + "cut_clipboard", 0); + gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, + "copy_clipboard", 0); + gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, + "paste_clipboard", 0); + gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK, + "undo", 0); + gtk_binding_entry_add_signal(binding_set, GDK_z, static_cast<GdkModifierType>(GDK_CONTROL_MASK | GDK_SHIFT_MASK), + "redo", 0); + + gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, + "cut_clipboard", 0); + gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, + "copy_clipboard", 0); + gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK, + "paste_clipboard", 0); + + /* Movement */ + + gtk_binding_entry_add_signal(binding_set, GDK_Down, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINES, + G_TYPE_INT, 1); + gtk_binding_entry_add_signal(binding_set, GDK_Up, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINES, + G_TYPE_INT, -1); + gtk_binding_entry_add_signal(binding_set, GDK_Right, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, 1); + gtk_binding_entry_add_signal(binding_set, GDK_Left, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, -1); + gtk_binding_entry_add_signal(binding_set, GDK_space, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_PAGES, + G_TYPE_INT, 1); + gtk_binding_entry_add_signal(binding_set, GDK_space, GDK_SHIFT_MASK, + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_PAGES, + G_TYPE_INT, -1); + gtk_binding_entry_add_signal(binding_set, GDK_Page_Down, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_PAGES, + G_TYPE_INT, 1); + gtk_binding_entry_add_signal(binding_set, GDK_Page_Up, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_PAGES, + G_TYPE_INT, -1); + gtk_binding_entry_add_signal(binding_set, GDK_End, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_BUFFER_ENDS, + G_TYPE_INT, 1); + gtk_binding_entry_add_signal(binding_set, GDK_Home, static_cast<GdkModifierType>(0), + "move-cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_BUFFER_ENDS, + G_TYPE_INT, -1); + + /* + * properties + */ + + /** + * WebKitWebView:title: + * + * Returns the @web_view's document title. + * + * Since: 1.1.4 + */ + g_object_class_install_property(objectClass, PROP_TITLE, + g_param_spec_string("title", + _("Title"), + _("Returns the @web_view's document title"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:uri: + * + * Returns the current URI of the contents displayed by the @web_view. + * + * Since: 1.1.4 + */ + g_object_class_install_property(objectClass, PROP_URI, + g_param_spec_string("uri", + _("URI"), + _("Returns the current URI of the contents displayed by the @web_view"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:copy-target-list: + * + * The list of targets this web view supports for clipboard copying. + * + * Since: 1.0.2 + */ + g_object_class_install_property(objectClass, PROP_COPY_TARGET_LIST, + g_param_spec_boxed("copy-target-list", + _("Copy target list"), + _("The list of targets this web view supports for clipboard copying"), + GTK_TYPE_TARGET_LIST, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:paste-target-list: + * + * The list of targets this web view supports for clipboard pasting. + * + * Since: 1.0.2 + */ + g_object_class_install_property(objectClass, PROP_PASTE_TARGET_LIST, + g_param_spec_boxed("paste-target-list", + _("Paste target list"), + _("The list of targets this web view supports for clipboard pasting"), + GTK_TYPE_TARGET_LIST, + WEBKIT_PARAM_READABLE)); + + g_object_class_install_property(objectClass, PROP_SETTINGS, + g_param_spec_object("settings", + _("Settings"), + _("An associated WebKitWebSettings instance"), + WEBKIT_TYPE_WEB_SETTINGS, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebView:web-inspector: + * + * The associated WebKitWebInspector instance. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_WEB_INSPECTOR, + g_param_spec_object("web-inspector", + _("Web Inspector"), + _("The associated WebKitWebInspector instance"), + WEBKIT_TYPE_WEB_INSPECTOR, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:viewport-attributes: + * + * The associated #WebKitViewportAttributes instance. + * + * Since: 1.3.8 + */ + g_object_class_install_property(objectClass, PROP_VIEWPORT_ATTRIBUTES, + g_param_spec_object("viewport-attributes", + _("Viewport Attributes"), + _("The associated WebKitViewportAttributes instance"), + WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:window-features: + * + * An associated WebKitWebWindowFeatures instance. + * + * Since: 1.0.3 + */ + g_object_class_install_property(objectClass, PROP_WINDOW_FEATURES, + g_param_spec_object("window-features", + "Window Features", + "An associated WebKitWebWindowFeatures instance", + WEBKIT_TYPE_WEB_WINDOW_FEATURES, + WEBKIT_PARAM_READWRITE)); + + g_object_class_install_property(objectClass, PROP_EDITABLE, + g_param_spec_boolean("editable", + _("Editable"), + _("Whether content can be modified by the user"), + FALSE, + WEBKIT_PARAM_READWRITE)); + + g_object_class_install_property(objectClass, PROP_TRANSPARENT, + g_param_spec_boolean("transparent", + _("Transparent"), + _("Whether content has a transparent background"), + FALSE, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebView:zoom-level: + * + * The level of zoom of the content. + * + * Since: 1.0.1 + */ + g_object_class_install_property(objectClass, PROP_ZOOM_LEVEL, + g_param_spec_float("zoom-level", + _("Zoom level"), + _("The level of zoom of the content"), + G_MINFLOAT, + G_MAXFLOAT, + 1.0f, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebView:full-content-zoom: + * + * Whether the full content is scaled when zooming. + * + * Since: 1.0.1 + */ + g_object_class_install_property(objectClass, PROP_FULL_CONTENT_ZOOM, + g_param_spec_boolean("full-content-zoom", + _("Full content zoom"), + _("Whether the full content is scaled when zooming"), + FALSE, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebView:encoding: + * + * The default encoding of the web view. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, PROP_ENCODING, + g_param_spec_string("encoding", + _("Encoding"), + _("The default encoding of the web view"), + NULL, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:custom-encoding: + * + * The custom encoding of the web view. + * + * Since: 1.1.2 + */ + g_object_class_install_property(objectClass, PROP_CUSTOM_ENCODING, + g_param_spec_string("custom-encoding", + _("Custom Encoding"), + _("The custom encoding of the web view"), + NULL, + WEBKIT_PARAM_READWRITE)); + + /** + * WebKitWebView:load-status: + * + * Determines the current status of the load. + * + * Connect to "notify::load-status" to monitor loading. + * + * Some versions of WebKitGTK+ emitted this signal for the default + * error page, while loading it. This behavior was considered bad, + * because it was essentially exposing an implementation + * detail. From 1.1.19 onwards this signal is no longer emitted for + * the default error pages, but keep in mind that if you override + * the error pages by using webkit_web_frame_load_alternate_string() + * the signals will be emitted. + * + * Since: 1.1.7 + */ + g_object_class_install_property(objectClass, PROP_LOAD_STATUS, + g_param_spec_enum("load-status", + "Load Status", + "Determines the current status of the load", + WEBKIT_TYPE_LOAD_STATUS, + WEBKIT_LOAD_FINISHED, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:progress: + * + * Determines the current progress of the load. + * + * Since: 1.1.7 + */ + g_object_class_install_property(objectClass, PROP_PROGRESS, + g_param_spec_double("progress", + "Progress", + "Determines the current progress of the load", + 0.0, 1.0, 1.0, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:icon-uri: + * + * The URI for the favicon for the #WebKitWebView. + * + * Since: 1.1.18 + */ + g_object_class_install_property(objectClass, PROP_ICON_URI, + g_param_spec_string("icon-uri", + _("Icon URI"), + _("The URI for the favicon for the #WebKitWebView."), + NULL, + WEBKIT_PARAM_READABLE)); + /** + * WebKitWebView:im-context: + * + * The GtkIMMulticontext for the #WebKitWebView. + * + * This is the input method context used for all text entry widgets inside + * the #WebKitWebView. It can be used to generate context menu items for + * controlling the active input method. + * + * Since: 1.1.20 + */ + g_object_class_install_property(objectClass, PROP_IM_CONTEXT, + g_param_spec_object("im-context", + "IM Context", + "The GtkIMMultiContext for the #WebKitWebView.", + GTK_TYPE_IM_CONTEXT, + WEBKIT_PARAM_READABLE)); + + /** + * WebKitWebView:view-mode: + * + * The "view-mode" media feature for the #WebKitWebView. + * + * The "view-mode" media feature is additional information for web + * applications about how the application is running, when it comes + * to user experience. Whether the application is running inside a + * regular browser window, in a dedicated window, fullscreen, for + * instance. + * + * This property stores a %WebKitWebViewViewMode value that matches + * the "view-mode" media feature the web application will see. + * + * See http://www.w3.org/TR/view-mode/ for more information. + * + * Since: 1.3.4 + */ + g_object_class_install_property(objectClass, PROP_VIEW_MODE, + g_param_spec_enum("view-mode", + "View Mode", + "The view-mode media feature for the #WebKitWebView.", + WEBKIT_TYPE_WEB_VIEW_VIEW_MODE, + WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED, + WEBKIT_PARAM_READWRITE)); + + g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate)); +} + +static void webkit_web_view_update_settings(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + WebKitWebSettings* webSettings = priv->webSettings.get(); + Settings* settings = core(webView)->settings(); + + gchar* defaultEncoding, *cursiveFontFamily, *defaultFontFamily, *fantasyFontFamily, *monospaceFontFamily, *sansSerifFontFamily, *serifFontFamily, *userStylesheetUri; + gboolean autoLoadImages, autoShrinkImages, printBackgrounds, + enableScripts, enablePlugins, enableDeveloperExtras, resizableTextAreas, + enablePrivateBrowsing, enableCaretBrowsing, enableHTML5Database, enableHTML5LocalStorage, + enableXSSAuditor, enableSpatialNavigation, enableFrameFlattening, javascriptCanOpenWindows, + javaScriptCanAccessClipboard, enableOfflineWebAppCache, + enableUniversalAccessFromFileURI, enableFileAccessFromFileURI, + enableDOMPaste, tabKeyCyclesThroughElements, + enableSiteSpecificQuirks, usePageCache, enableJavaApplet, enableHyperlinkAuditing, enableFullscreen; + + WebKitEditingBehavior editingBehavior; + + g_object_get(webSettings, + "default-encoding", &defaultEncoding, + "cursive-font-family", &cursiveFontFamily, + "default-font-family", &defaultFontFamily, + "fantasy-font-family", &fantasyFontFamily, + "monospace-font-family", &monospaceFontFamily, + "sans-serif-font-family", &sansSerifFontFamily, + "serif-font-family", &serifFontFamily, + "auto-load-images", &autoLoadImages, + "auto-shrink-images", &autoShrinkImages, + "print-backgrounds", &printBackgrounds, + "enable-scripts", &enableScripts, + "enable-plugins", &enablePlugins, + "resizable-text-areas", &resizableTextAreas, + "user-stylesheet-uri", &userStylesheetUri, + "enable-developer-extras", &enableDeveloperExtras, + "enable-private-browsing", &enablePrivateBrowsing, + "enable-caret-browsing", &enableCaretBrowsing, + "enable-html5-database", &enableHTML5Database, + "enable-html5-local-storage", &enableHTML5LocalStorage, + "enable-xss-auditor", &enableXSSAuditor, + "enable-spatial-navigation", &enableSpatialNavigation, + "enable-frame-flattening", &enableFrameFlattening, + "javascript-can-open-windows-automatically", &javascriptCanOpenWindows, + "javascript-can-access-clipboard", &javaScriptCanAccessClipboard, + "enable-offline-web-application-cache", &enableOfflineWebAppCache, + "editing-behavior", &editingBehavior, + "enable-universal-access-from-file-uris", &enableUniversalAccessFromFileURI, + "enable-file-access-from-file-uris", &enableFileAccessFromFileURI, + "enable-dom-paste", &enableDOMPaste, + "tab-key-cycles-through-elements", &tabKeyCyclesThroughElements, + "enable-site-specific-quirks", &enableSiteSpecificQuirks, + "enable-page-cache", &usePageCache, + "enable-java-applet", &enableJavaApplet, + "enable-hyperlink-auditing", &enableHyperlinkAuditing, + "enable-fullscreen", &enableFullscreen, + NULL); + + settings->setDefaultTextEncodingName(defaultEncoding); + settings->setCursiveFontFamily(cursiveFontFamily); + settings->setStandardFontFamily(defaultFontFamily); + settings->setFantasyFontFamily(fantasyFontFamily); + settings->setFixedFontFamily(monospaceFontFamily); + settings->setSansSerifFontFamily(sansSerifFontFamily); + settings->setSerifFontFamily(serifFontFamily); + settings->setLoadsImagesAutomatically(autoLoadImages); + settings->setShrinksStandaloneImagesToFit(autoShrinkImages); + settings->setShouldPrintBackgrounds(printBackgrounds); + settings->setJavaScriptEnabled(enableScripts); + settings->setPluginsEnabled(enablePlugins); + settings->setTextAreasAreResizable(resizableTextAreas); + settings->setUserStyleSheetLocation(KURL(KURL(), userStylesheetUri)); + settings->setDeveloperExtrasEnabled(enableDeveloperExtras); + settings->setPrivateBrowsingEnabled(enablePrivateBrowsing); + settings->setCaretBrowsingEnabled(enableCaretBrowsing); +#if ENABLE(DATABASE) + AbstractDatabase::setIsAvailable(enableHTML5Database); +#endif + settings->setLocalStorageEnabled(enableHTML5LocalStorage); + settings->setXSSAuditorEnabled(enableXSSAuditor); + settings->setSpatialNavigationEnabled(enableSpatialNavigation); + settings->setFrameFlatteningEnabled(enableFrameFlattening); + settings->setJavaScriptCanOpenWindowsAutomatically(javascriptCanOpenWindows); + settings->setJavaScriptCanAccessClipboard(javaScriptCanAccessClipboard); + settings->setOfflineWebApplicationCacheEnabled(enableOfflineWebAppCache); + settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(editingBehavior)); + settings->setAllowUniversalAccessFromFileURLs(enableUniversalAccessFromFileURI); + settings->setAllowFileAccessFromFileURLs(enableFileAccessFromFileURI); + settings->setDOMPasteAllowed(enableDOMPaste); + settings->setNeedsSiteSpecificQuirks(enableSiteSpecificQuirks); + settings->setUsesPageCache(usePageCache); + settings->setJavaEnabled(enableJavaApplet); + settings->setHyperlinkAuditingEnabled(enableHyperlinkAuditing); +#if ENABLE(FULLSCREEN_API) + settings->setFullScreenEnabled(enableFullscreen); +#endif + Page* page = core(webView); + if (page) + page->setTabKeyCyclesThroughElements(tabKeyCyclesThroughElements); + + g_free(defaultEncoding); + g_free(cursiveFontFamily); + g_free(defaultFontFamily); + g_free(fantasyFontFamily); + g_free(monospaceFontFamily); + g_free(sansSerifFontFamily); + g_free(serifFontFamily); + g_free(userStylesheetUri); + + webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL); +} + +static inline gint pixelsFromSize(WebKitWebView* webView, gint size) +{ + gdouble DPI = webViewGetDPI(webView); + return size / 72.0 * DPI; +} + +static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView) +{ + Settings* settings = core(webView)->settings(); + + const gchar* name = g_intern_string(pspec->name); + GValue value = { 0, { { 0 } } }; + g_value_init(&value, pspec->value_type); + g_object_get_property(G_OBJECT(webSettings), name, &value); + + if (name == g_intern_string("default-encoding")) + settings->setDefaultTextEncodingName(g_value_get_string(&value)); + else if (name == g_intern_string("cursive-font-family")) + settings->setCursiveFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("default-font-family")) + settings->setStandardFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("fantasy-font-family")) + settings->setFantasyFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("monospace-font-family")) + settings->setFixedFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("sans-serif-font-family")) + settings->setSansSerifFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("serif-font-family")) + settings->setSerifFontFamily(g_value_get_string(&value)); + else if (name == g_intern_string("default-font-size")) + settings->setDefaultFontSize(pixelsFromSize(webView, g_value_get_int(&value))); + else if (name == g_intern_string("default-monospace-font-size")) + settings->setDefaultFixedFontSize(pixelsFromSize(webView, g_value_get_int(&value))); + else if (name == g_intern_string("minimum-font-size")) + settings->setMinimumFontSize(pixelsFromSize(webView, g_value_get_int(&value))); + else if (name == g_intern_string("minimum-logical-font-size")) + settings->setMinimumLogicalFontSize(pixelsFromSize(webView, g_value_get_int(&value))); + else if (name == g_intern_string("enforce-96-dpi")) + webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL); + else if (name == g_intern_string("auto-load-images")) + settings->setLoadsImagesAutomatically(g_value_get_boolean(&value)); + else if (name == g_intern_string("auto-shrink-images")) + settings->setShrinksStandaloneImagesToFit(g_value_get_boolean(&value)); + else if (name == g_intern_string("print-backgrounds")) + settings->setShouldPrintBackgrounds(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-scripts")) + settings->setJavaScriptEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-plugins")) + settings->setPluginsEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("resizable-text-areas")) + settings->setTextAreasAreResizable(g_value_get_boolean(&value)); + else if (name == g_intern_string("user-stylesheet-uri")) + settings->setUserStyleSheetLocation(KURL(KURL(), g_value_get_string(&value))); + else if (name == g_intern_string("enable-developer-extras")) + settings->setDeveloperExtrasEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-private-browsing")) + settings->setPrivateBrowsingEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-caret-browsing")) + settings->setCaretBrowsingEnabled(g_value_get_boolean(&value)); +#if ENABLE(DATABASE) + else if (name == g_intern_string("enable-html5-database")) { + AbstractDatabase::setIsAvailable(g_value_get_boolean(&value)); + } +#endif + else if (name == g_intern_string("enable-html5-local-storage")) + settings->setLocalStorageEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-xss-auditor")) + settings->setXSSAuditorEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-spatial-navigation")) + settings->setSpatialNavigationEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-frame-flattening")) + settings->setFrameFlatteningEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("javascript-can-open-windows-automatically")) + settings->setJavaScriptCanOpenWindowsAutomatically(g_value_get_boolean(&value)); + else if (name == g_intern_string("javascript-can-access-clipboard")) + settings->setJavaScriptCanAccessClipboard(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-offline-web-application-cache")) + settings->setOfflineWebApplicationCacheEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("editing-behavior")) + settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(g_value_get_enum(&value))); + else if (name == g_intern_string("enable-universal-access-from-file-uris")) + settings->setAllowUniversalAccessFromFileURLs(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-file-access-from-file-uris")) + settings->setAllowFileAccessFromFileURLs(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-dom-paste")) + settings->setDOMPasteAllowed(g_value_get_boolean(&value)); + else if (name == g_intern_string("tab-key-cycles-through-elements")) { + Page* page = core(webView); + if (page) + page->setTabKeyCyclesThroughElements(g_value_get_boolean(&value)); + } else if (name == g_intern_string("enable-site-specific-quirks")) + settings->setNeedsSiteSpecificQuirks(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-page-cache")) + settings->setUsesPageCache(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-java-applet")) + settings->setJavaEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("enable-hyperlink-auditing")) + settings->setHyperlinkAuditingEnabled(g_value_get_boolean(&value)); + else if (!g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), name)) + g_warning("Unexpected setting '%s'", name); + g_value_unset(&value); +} + +static void webkit_web_view_init(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webView, WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate); + webView->priv = priv; + // This is the placement new syntax: http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10 + // It allows us to call a constructor on manually allocated locations in memory. We must use it + // in this case, because GLib manages the memory for the private data section, but we wish it + // to contain C++ object members. The use of placement new calls the constructor on all C++ data + // members, which ensures they are initialized properly. + new (priv) WebKitWebViewPrivate(); + + priv->imContext = adoptGRef(gtk_im_multicontext_new()); + + Page::PageClients pageClients; + pageClients.chromeClient = new WebKit::ChromeClient(webView); + pageClients.contextMenuClient = new WebKit::ContextMenuClient(webView); + pageClients.editorClient = new WebKit::EditorClient(webView); + pageClients.dragClient = new WebKit::DragClient(webView); + pageClients.inspectorClient = new WebKit::InspectorClient(webView); + priv->corePage = new Page(pageClients); + + // Pages within a same session need to be linked together otherwise some functionalities such + // as visited link coloration (across pages) and changing popup window location will not work. + // To keep the default behavior simple (and because no PageGroup API exist in WebKitGTK at the + // time of writing this comment), we simply set all the pages to the same group. + priv->corePage->setGroupName("org.webkit.gtk.WebKitGTK"); + + // We also add a simple wrapper class to provide the public + // interface for the Web Inspector. + priv->webInspector = adoptGRef(WEBKIT_WEB_INSPECTOR(g_object_new(WEBKIT_TYPE_WEB_INSPECTOR, NULL))); + webkit_web_inspector_set_inspector_client(priv->webInspector.get(), priv->corePage); + + // And our ViewportAttributes friend. + priv->viewportAttributes = adoptGRef(WEBKIT_VIEWPORT_ATTRIBUTES(g_object_new(WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, NULL))); + priv->viewportAttributes->priv->webView = webView; + + // The smart pointer will call g_object_ref_sink on these adjustments. + priv->horizontalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + priv->verticalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + + gtk_widget_set_can_focus(GTK_WIDGET(webView), TRUE); + priv->mainFrame = WEBKIT_WEB_FRAME(webkit_web_frame_new(webView)); + priv->lastPopupXPosition = priv->lastPopupYPosition = -1; + priv->editable = false; + + priv->backForwardList = adoptGRef(webkit_web_back_forward_list_new_with_web_view(webView)); + + priv->zoomFullContent = FALSE; + + priv->webSettings = adoptGRef(webkit_web_settings_new()); + webkit_web_view_update_settings(webView); + g_signal_connect(priv->webSettings.get(), "notify", G_CALLBACK(webkit_web_view_settings_notify), webView); + + priv->webWindowFeatures = adoptGRef(webkit_web_window_features_new()); + + priv->subResources = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref)); + + priv->currentClickCount = 0; + priv->previousClickButton = 0; + priv->previousClickTime = 0; + gtk_drag_dest_set(GTK_WIDGET(webView), static_cast<GtkDestDefaults>(0), 0, 0, static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_PRIVATE)); + gtk_drag_dest_set_target_list(GTK_WIDGET(webView), pasteboardHelperInstance()->targetList()); +} + +GtkWidget* webkit_web_view_new(void) +{ + WebKitWebView* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, NULL)); + + return GTK_WIDGET(webView); +} + +// for internal use only +void webkit_web_view_notify_ready(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + gboolean isHandled = FALSE; + g_signal_emit(webView, webkit_web_view_signals[WEB_VIEW_READY], 0, &isHandled); +} + +void webkit_web_view_request_download(WebKitWebView* webView, WebKitNetworkRequest* request, const ResourceResponse& response, ResourceHandle* handle) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitDownload* download; + + if (handle) + download = webkit_download_new_with_handle(request, handle, response); + else + download = webkit_download_new(request); + + gboolean handled; + g_signal_emit(webView, webkit_web_view_signals[DOWNLOAD_REQUESTED], 0, download, &handled); + + if (!handled) { + webkit_download_cancel(download); + g_object_unref(download); + return; + } + + /* Start the download now if it has a destination URI, otherwise it + may be handled asynchronously by the application. */ + if (webkit_download_get_destination_uri(download)) + webkit_download_start(download); +} + +bool webkit_web_view_use_primary_for_paste(WebKitWebView* webView) +{ + return webView->priv->usePrimaryForPaste; +} + +/** + * webkit_web_view_set_settings: + * @webView: a #WebKitWebView + * @settings: (transfer none): the #WebKitWebSettings to be set + * + * Replaces the #WebKitWebSettings instance that is currently attached + * to @web_view with @settings. The reference held by the @web_view on + * the old #WebKitWebSettings instance is dropped, and the reference + * count of @settings is inscreased. + * + * The settings are automatically applied to @web_view. + */ +void webkit_web_view_set_settings(WebKitWebView* webView, WebKitWebSettings* webSettings) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(WEBKIT_IS_WEB_SETTINGS(webSettings)); + + WebKitWebViewPrivate* priv = webView->priv; + g_signal_handlers_disconnect_by_func(priv->webSettings.get(), (gpointer)webkit_web_view_settings_notify, webView); + priv->webSettings = webSettings; + webkit_web_view_update_settings(webView); + g_signal_connect(webSettings, "notify", G_CALLBACK(webkit_web_view_settings_notify), webView); + g_object_notify(G_OBJECT(webView), "settings"); +} + +/** + * webkit_web_view_get_settings: + * @webView: a #WebKitWebView + * + * Obtains the #WebKitWebSettings associated with the + * #WebKitWebView. The #WebKitWebView always has an associated + * instance of #WebKitWebSettings. The reference that is returned by + * this call is owned by the #WebKitWebView. You may need to increase + * its reference count if you intend to keep it alive for longer than + * the #WebKitWebView. + * + * Return value: (transfer none): the #WebKitWebSettings instance + */ +WebKitWebSettings* webkit_web_view_get_settings(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + return webView->priv->webSettings.get(); +} + +/** + * webkit_web_view_get_inspector: + * @webView: a #WebKitWebView + * + * Obtains the #WebKitWebInspector associated with the + * #WebKitWebView. Every #WebKitWebView object has a + * #WebKitWebInspector object attached to it as soon as it is created, + * so this function will only return NULL if the argument is not a + * valid #WebKitWebView. + * + * Return value: (transfer none): the #WebKitWebInspector instance. + * + * Since: 1.0.3 + */ +WebKitWebInspector* webkit_web_view_get_inspector(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + return webView->priv->webInspector.get(); +} + +/** + * webkit_web_view_get_viewport_attributes: + * @webView: a #WebKitWebView + * + * Obtains the #WebKitViewportAttributes associated with the + * #WebKitWebView. Every #WebKitWebView object has a + * #WebKitWebViewporAttributes object attached to it as soon as it is + * created, so this function will only return NULL if the argument is + * not a valid #WebKitWebView. Do note however that the viewport + * attributes object only contains valid information when the current + * page has a viewport meta tag. You can check whether the data should + * be used by checking the #WebKitViewport:valid property. + * + * Return value: (transfer none): the #WebKitViewportAttributes instance. + * + * Since: 1.3.8 + */ +WebKitViewportAttributes* webkit_web_view_get_viewport_attributes(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + return webView->priv->viewportAttributes.get(); +} + +// internal +static void webkit_web_view_set_window_features(WebKitWebView* webView, WebKitWebWindowFeatures* webWindowFeatures) +{ + if (!webWindowFeatures) + return; + if (webkit_web_window_features_equal(webView->priv->webWindowFeatures.get(), webWindowFeatures)) + return; + webView->priv->webWindowFeatures = webWindowFeatures; +} + +/** + * webkit_web_view_get_window_features: + * @webView: a #WebKitWebView + * + * Returns the instance of #WebKitWebWindowFeatures held by the given + * #WebKitWebView. + * + * Return value: (transfer none): the #WebKitWebWindowFeatures + * + * Since: 1.0.3 + */ +WebKitWebWindowFeatures* webkit_web_view_get_window_features(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + return webView->priv->webWindowFeatures.get(); +} + +/** + * webkit_web_view_get_title: + * @webView: a #WebKitWebView + * + * Returns the @web_view's document title + * + * Since: 1.1.4 + * + * Return value: the title of @web_view + */ +G_CONST_RETURN gchar* webkit_web_view_get_title(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + + WebKitWebViewPrivate* priv = webView->priv; + return priv->mainFrame->priv->title; +} + +/** + * webkit_web_view_get_uri: + * @webView: a #WebKitWebView + * + * Returns the current URI of the contents displayed by the @web_view + * + * Since: 1.1.4 + * + * Return value: the URI of @web_view + */ +G_CONST_RETURN gchar* webkit_web_view_get_uri(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + + WebKitWebViewPrivate* priv = webView->priv; + return priv->mainFrame->priv->uri; +} + +/** + * webkit_web_view_set_maintains_back_forward_list: + * @webView: a #WebKitWebView + * @flag: to tell the view to maintain a back or forward list + * + * Set the view to maintain a back or forward list of history items. + */ +void webkit_web_view_set_maintains_back_forward_list(WebKitWebView* webView, gboolean flag) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + static_cast<BackForwardListImpl*>(core(webView)->backForwardList())->setEnabled(flag); +} + +/** + * webkit_web_view_get_back_forward_list: + * @webView: a #WebKitWebView + * + * Obtains the #WebKitWebBackForwardList associated with the given #WebKitWebView. The + * #WebKitWebBackForwardList is owned by the #WebKitWebView. + * + * Return value: (transfer none): the #WebKitWebBackForwardList + */ +WebKitWebBackForwardList* webkit_web_view_get_back_forward_list(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + if (!core(webView) || !static_cast<BackForwardListImpl*>(core(webView)->backForwardList())->enabled()) + return 0; + return webView->priv->backForwardList.get(); +} + +/** + * webkit_web_view_go_to_back_forward_item: + * @webView: a #WebKitWebView + * @item: a #WebKitWebHistoryItem* + * + * Go to the specified #WebKitWebHistoryItem + * + * Return value: %TRUE if loading of item is successful, %FALSE if not + */ +gboolean webkit_web_view_go_to_back_forward_item(WebKitWebView* webView, WebKitWebHistoryItem* item) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(item), FALSE); + + WebKitWebBackForwardList* backForwardList = webkit_web_view_get_back_forward_list(webView); + if (!webkit_web_back_forward_list_contains_item(backForwardList, item)) + return FALSE; + + core(webView)->goToItem(core(item), FrameLoadTypeIndexedBackForward); + return TRUE; +} + +/** + * webkit_web_view_go_back: + * @webView: a #WebKitWebView + * + * Loads the previous history item. + */ +void webkit_web_view_go_back(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->goBack(); +} + +/** + * webkit_web_view_go_back_or_forward: + * @webView: a #WebKitWebView + * @steps: the number of steps + * + * Loads the history item that is the number of @steps away from the current + * item. Negative values represent steps backward while positive values + * represent steps forward. + */ +void webkit_web_view_go_back_or_forward(WebKitWebView* webView, gint steps) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->goBackOrForward(steps); +} + +/** + * webkit_web_view_go_forward: + * @webView: a #WebKitWebView + * + * Loads the next history item. + */ +void webkit_web_view_go_forward(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->goForward(); +} + +/** + * webkit_web_view_can_go_back: + * @webView: a #WebKitWebView + * + * Determines whether #web_view has a previous history item. + * + * Return value: %TRUE if able to move back, %FALSE otherwise + */ +gboolean webkit_web_view_can_go_back(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + if (!core(webView) || !core(webView)->backForwardList()->backItem()) + return FALSE; + + return TRUE; +} + +/** + * webkit_web_view_can_go_back_or_forward: + * @webView: a #WebKitWebView + * @steps: the number of steps + * + * Determines whether #web_view has a history item of @steps. Negative values + * represent steps backward while positive values represent steps forward. + * + * Return value: %TRUE if able to move back or forward the given number of + * steps, %FALSE otherwise + */ +gboolean webkit_web_view_can_go_back_or_forward(WebKitWebView* webView, gint steps) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + return core(webView)->canGoBackOrForward(steps); +} + +/** + * webkit_web_view_can_go_forward: + * @webView: a #WebKitWebView + * + * Determines whether #web_view has a next history item. + * + * Return value: %TRUE if able to move forward, %FALSE otherwise + */ +gboolean webkit_web_view_can_go_forward(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Page* page = core(webView); + + if (!page) + return FALSE; + + if (!page->backForwardList()->forwardItem()) + return FALSE; + + return TRUE; +} + +/** + * webkit_web_view_open: + * @webView: a #WebKitWebView + * @uri: an URI + * + * Requests loading of the specified URI string. + * + * Deprecated: 1.1.1: Use webkit_web_view_load_uri() instead. + */ +void webkit_web_view_open(WebKitWebView* webView, const gchar* uri) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(uri); + + // We used to support local paths, unlike the newer + // function webkit_web_view_load_uri + if (g_path_is_absolute(uri)) { + gchar* fileUri = g_filename_to_uri(uri, NULL, NULL); + webkit_web_view_load_uri(webView, fileUri); + g_free(fileUri); + } + else + webkit_web_view_load_uri(webView, uri); +} + +void webkit_web_view_reload(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->mainFrame()->loader()->reload(); +} + +/** + * webkit_web_view_reload_bypass_cache: + * @webView: a #WebKitWebView + * + * Reloads the @web_view without using any cached data. + * + * Since: 1.0.3 + */ +void webkit_web_view_reload_bypass_cache(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->mainFrame()->loader()->reload(true); +} + +/** + * webkit_web_view_load_uri: + * @webView: a #WebKitWebView + * @uri: an URI string + * + * Requests loading of the specified URI string. + * + * Since: 1.1.1 + */ +void webkit_web_view_load_uri(WebKitWebView* webView, const gchar* uri) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(uri); + + WebKitWebFrame* frame = webView->priv->mainFrame; + webkit_web_frame_load_uri(frame, uri); +} + +/** + * webkit_web_view_load_string: + * @webView: a #WebKitWebView + * @content: an URI string + * @mime_type: the MIME type, or %NULL + * @encoding: the encoding, or %NULL + * @base_uri: the base URI for relative locations + * + * Requests loading of the given @content with the specified @mime_type, + * @encoding and @base_uri. + * + * If @mime_type is %NULL, "text/html" is assumed. + * + * If @encoding is %NULL, "UTF-8" is assumed. + */ +void webkit_web_view_load_string(WebKitWebView* webView, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseUri) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(content); + + WebKitWebFrame* frame = webView->priv->mainFrame; + webkit_web_frame_load_string(frame, content, mimeType, encoding, baseUri); +} +/** + * webkit_web_view_load_html_string: + * @webView: a #WebKitWebView + * @content: an URI string + * @base_uri: the base URI for relative locations + * + * Requests loading of the given @content with the specified @base_uri. + * + * Deprecated: 1.1.1: Use webkit_web_view_load_string() instead. + */ +void webkit_web_view_load_html_string(WebKitWebView* webView, const gchar* content, const gchar* baseUri) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(content); + + webkit_web_view_load_string(webView, content, NULL, NULL, baseUri); +} + +/** + * webkit_web_view_load_request: + * @webView: a #WebKitWebView + * @request: a #WebKitNetworkRequest + * + * Requests loading of the specified asynchronous client request. + * + * Creates a provisional data source that will transition to a committed data + * source once any data has been received. Use webkit_web_view_stop_loading() to + * stop the load. + * + * Since: 1.1.1 + */ +void webkit_web_view_load_request(WebKitWebView* webView, WebKitNetworkRequest* request) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request)); + + WebKitWebFrame* frame = webView->priv->mainFrame; + webkit_web_frame_load_request(frame, request); +} + +/** + * webkit_web_view_stop_loading: + * @webView: a #WebKitWebView + * + * Stops any ongoing load in the @webView. + **/ +void webkit_web_view_stop_loading(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + Frame* frame = core(webView)->mainFrame(); + + if (FrameLoader* loader = frame->loader()) + loader->stopForUserCancel(); +} + +/** + * webkit_web_view_search_text: + * @webView: a #WebKitWebView + * @text: a string to look for + * @forward: whether to find forward or not + * @case_sensitive: whether to respect the case of text + * @wrap: whether to continue looking at the beginning after reaching the end + * + * Looks for a specified string inside #web_view. + * + * Return value: %TRUE on success or %FALSE on failure + */ +gboolean webkit_web_view_search_text(WebKitWebView* webView, const gchar* string, gboolean caseSensitive, gboolean forward, gboolean shouldWrap) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + g_return_val_if_fail(string, FALSE); + + TextCaseSensitivity caseSensitivity = caseSensitive ? TextCaseSensitive : TextCaseInsensitive; + FindDirection direction = forward ? FindDirectionForward : FindDirectionBackward; + + return core(webView)->findString(String::fromUTF8(string), caseSensitivity, direction, shouldWrap); +} + +/** + * webkit_web_view_mark_text_matches: + * @webView: a #WebKitWebView + * @string: a string to look for + * @case_sensitive: whether to respect the case of text + * @limit: the maximum number of strings to look for or 0 for all + * + * Attempts to highlight all occurances of #string inside #web_view. + * + * Return value: the number of strings highlighted + */ +guint webkit_web_view_mark_text_matches(WebKitWebView* webView, const gchar* string, gboolean caseSensitive, guint limit) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + g_return_val_if_fail(string, 0); + + TextCaseSensitivity caseSensitivity = caseSensitive ? TextCaseSensitive : TextCaseInsensitive; + + return core(webView)->markAllMatchesForText(String::fromUTF8(string), caseSensitivity, false, limit); +} + +/** + * webkit_web_view_set_highlight_text_matches: + * @webView: a #WebKitWebView + * @highlight: whether to highlight text matches + * + * Highlights text matches previously marked by webkit_web_view_mark_text_matches. + */ +void webkit_web_view_set_highlight_text_matches(WebKitWebView* webView, gboolean shouldHighlight) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + Frame *frame = core(webView)->mainFrame(); + do { + frame->editor()->setMarkedTextMatchesAreHighlighted(shouldHighlight); + frame = frame->tree()->traverseNextWithWrap(false); + } while (frame); +} + +/** + * webkit_web_view_unmark_text_matches: + * @webView: a #WebKitWebView + * + * Removes highlighting previously set by webkit_web_view_mark_text_matches. + */ +void webkit_web_view_unmark_text_matches(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + return core(webView)->unmarkAllTextMatches(); +} + +/** + * webkit_web_view_get_main_frame: + * @webView: a #WebKitWebView + * + * Returns the main frame for the @webView. + * + * Return value: (transfer none): the main #WebKitWebFrame for @webView + */ +WebKitWebFrame* webkit_web_view_get_main_frame(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + + return webView->priv->mainFrame; +} + +/** + * webkit_web_view_get_focused_frame: + * @webView: a #WebKitWebView + * + * Returns the frame that has focus or an active text selection. + * + * Return value: (transfer none): The focused #WebKitWebFrame or %NULL if no frame is focused + */ +WebKitWebFrame* webkit_web_view_get_focused_frame(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + + Frame* focusedFrame = core(webView)->focusController()->focusedFrame(); + return kit(focusedFrame); +} + +void webkit_web_view_execute_script(WebKitWebView* webView, const gchar* script) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(script); + + core(webView)->mainFrame()->script()->executeScript(String::fromUTF8(script), true); +} + +/** + * webkit_web_view_can_cut_clipboard: + * @webView: a #WebKitWebView + * + * Determines whether or not it is currently possible to cut to the clipboard. + * + * Return value: %TRUE if a selection can be cut, %FALSE if not + */ +gboolean webkit_web_view_can_cut_clipboard(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return frame->editor()->canCut() || frame->editor()->canDHTMLCut(); +} + +/** + * webkit_web_view_can_copy_clipboard: + * @webView: a #WebKitWebView + * + * Determines whether or not it is currently possible to copy to the clipboard. + * + * Return value: %TRUE if a selection can be copied, %FALSE if not + */ +gboolean webkit_web_view_can_copy_clipboard(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return frame->editor()->canCopy() || frame->editor()->canDHTMLCopy(); +} + +/** + * webkit_web_view_can_paste_clipboard: + * @webView: a #WebKitWebView + * + * Determines whether or not it is currently possible to paste from the clipboard. + * + * Return value: %TRUE if a selection can be pasted, %FALSE if not + */ +gboolean webkit_web_view_can_paste_clipboard(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return frame->editor()->canPaste() || frame->editor()->canDHTMLPaste(); +} + +/** + * webkit_web_view_cut_clipboard: + * @webView: a #WebKitWebView + * + * Cuts the current selection inside the @web_view to the clipboard. + */ +void webkit_web_view_cut_clipboard(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (webkit_web_view_can_cut_clipboard(webView)) + g_signal_emit(webView, webkit_web_view_signals[CUT_CLIPBOARD], 0); +} + +/** + * webkit_web_view_copy_clipboard: + * @webView: a #WebKitWebView + * + * Copies the current selection inside the @web_view to the clipboard. + */ +void webkit_web_view_copy_clipboard(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (webkit_web_view_can_copy_clipboard(webView)) + g_signal_emit(webView, webkit_web_view_signals[COPY_CLIPBOARD], 0); +} + +/** + * webkit_web_view_paste_clipboard: + * @webView: a #WebKitWebView + * + * Pastes the current contents of the clipboard to the @web_view. + */ +void webkit_web_view_paste_clipboard(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (webkit_web_view_can_paste_clipboard(webView)) + g_signal_emit(webView, webkit_web_view_signals[PASTE_CLIPBOARD], 0); +} + +/** + * webkit_web_view_delete_selection: + * @webView: a #WebKitWebView + * + * Deletes the current selection inside the @web_view. + */ +void webkit_web_view_delete_selection(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + frame->editor()->performDelete(); +} + +/** + * webkit_web_view_has_selection: + * @webView: a #WebKitWebView + * + * Determines whether text was selected. + * + * Return value: %TRUE if there is selected text, %FALSE if not + */ +gboolean webkit_web_view_has_selection(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + return !core(webView)->selection().isNone(); +} + +/** + * webkit_web_view_get_selected_text: + * @webView: a #WebKitWebView + * + * Retrieves the selected text if any. + * + * Return value: a newly allocated string with the selection or %NULL + */ +gchar* webkit_web_view_get_selected_text(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return g_strdup(frame->editor()->selectedText().utf8().data()); +} + +/** + * webkit_web_view_select_all: + * @webView: a #WebKitWebView + * + * Attempts to select everything inside the @web_view. + */ +void webkit_web_view_select_all(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + g_signal_emit(webView, webkit_web_view_signals[SELECT_ALL], 0); +} + +/** + * webkit_web_view_get_editable: + * @webView: a #WebKitWebView + * + * Returns whether the user is allowed to edit the document. + * + * Returns %TRUE if @web_view allows the user to edit the HTML document, %FALSE if + * it doesn't. You can change @web_view's document programmatically regardless of + * this setting. + * + * Return value: a #gboolean indicating the editable state + */ +gboolean webkit_web_view_get_editable(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + WebKitWebViewPrivate* priv = webView->priv; + + return priv->editable; +} + +/** + * webkit_web_view_set_editable: + * @webView: a #WebKitWebView + * @flag: a #gboolean indicating the editable state + * + * Sets whether @web_view allows the user to edit its HTML document. + * + * If @flag is %TRUE, @web_view allows the user to edit the document. If @flag is + * %FALSE, an element in @web_view's document can only be edited if the + * CONTENTEDITABLE attribute has been set on the element or one of its parent + * elements. You can change @web_view's document programmatically regardless of + * this setting. By default a #WebKitWebView is not editable. + + * Normally, an HTML document is not editable unless the elements within the + * document are editable. This function provides a low-level way to make the + * contents of a #WebKitWebView editable without altering the document or DOM + * structure. + */ +void webkit_web_view_set_editable(WebKitWebView* webView, gboolean flag) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitWebViewPrivate* priv = webView->priv; + + Frame* frame = core(webView)->mainFrame(); + g_return_if_fail(frame); + + // TODO: What happens when the frame is replaced? + flag = flag != FALSE; + if (flag == priv->editable) + return; + + priv->editable = flag; + + if (flag) { + frame->editor()->applyEditingStyleToBodyElement(); + // TODO: If the WebKitWebView is made editable and the selection is empty, set it to something. + //if (!webkit_web_view_get_selected_dom_range(webView)) + // mainFrame->setSelectionFromNone(); + } + g_object_notify(G_OBJECT(webView), "editable"); +} + +/** + * webkit_web_view_get_copy_target_list: + * @webView: a #WebKitWebView + * + * This function returns the list of targets this #WebKitWebView can + * provide for clipboard copying and as DND source. The targets in the list are + * added with values from the #WebKitWebViewTargetInfo enum, + * using gtk_target_list_add() and + * gtk_target_list_add_text_targets(). + * + * Return value: the #GtkTargetList + **/ +GtkTargetList* webkit_web_view_get_copy_target_list(WebKitWebView* webView) +{ + return pasteboardHelperInstance()->targetList(); +} + +/** + * webkit_web_view_get_paste_target_list: + * @webView: a #WebKitWebView + * + * This function returns the list of targets this #WebKitWebView can + * provide for clipboard pasting and as DND destination. The targets in the list are + * added with values from the #WebKitWebViewTargetInfo enum, + * using gtk_target_list_add() and + * gtk_target_list_add_text_targets(). + * + * Return value: the #GtkTargetList + **/ +GtkTargetList* webkit_web_view_get_paste_target_list(WebKitWebView* webView) +{ + return pasteboardHelperInstance()->targetList(); +} + +/** + * webkit_web_view_can_show_mime_type: + * @webView: a #WebKitWebView + * @mime_type: a MIME type + * + * This functions returns whether or not a MIME type can be displayed using this view. + * + * Return value: a #gboolean indicating if the MIME type can be displayed + * + * Since: 1.0.3 + **/ + +gboolean webkit_web_view_can_show_mime_type(WebKitWebView* webView, const gchar* mimeType) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webkit_web_view_get_main_frame(webView)); + if (FrameLoader* loader = frame->loader()) + return loader->canShowMIMEType(String::fromUTF8(mimeType)); + else + return FALSE; +} + +/** + * webkit_web_view_get_transparent: + * @webView: a #WebKitWebView + * + * Returns whether the #WebKitWebView has a transparent background. + * + * Return value: %FALSE when the #WebKitWebView draws a solid background + * (the default), otherwise %TRUE. + */ +gboolean webkit_web_view_get_transparent(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + WebKitWebViewPrivate* priv = webView->priv; + return priv->transparent; +} + +/** + * webkit_web_view_set_transparent: + * @webView: a #WebKitWebView + * + * Sets whether the #WebKitWebView has a transparent background. + * + * Pass %FALSE to have the #WebKitWebView draw a solid background + * (the default), otherwise %TRUE. + */ +void webkit_web_view_set_transparent(WebKitWebView* webView, gboolean flag) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitWebViewPrivate* priv = webView->priv; + priv->transparent = flag; + + // TODO: This needs to be made persistent or it could become a problem when + // the main frame is replaced. + Frame* frame = core(webView)->mainFrame(); + g_return_if_fail(frame); + frame->view()->setTransparent(flag); + g_object_notify(G_OBJECT(webView), "transparent"); +} + +/** + * webkit_web_view_get_zoom_level: + * @webView: a #WebKitWebView + * + * Returns the zoom level of @web_view, i.e. the factor by which elements in + * the page are scaled with respect to their original size. + * If the "full-content-zoom" property is set to %FALSE (the default) + * the zoom level changes the text size, or if %TRUE, scales all + * elements in the page. + * + * Return value: the zoom level of @web_view + * + * Since: 1.0.1 + */ +gfloat webkit_web_view_get_zoom_level(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1.0f); + + Frame* frame = core(webView)->mainFrame(); + if (!frame) + return 1.0f; + + WebKitWebViewPrivate* priv = webView->priv; + return priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor(); +} + +static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoomLevel) +{ + Frame* frame = core(webView)->mainFrame(); + if (!frame) + return; + + WebKitWebViewPrivate* priv = webView->priv; + if (priv->zoomFullContent) + frame->setPageZoomFactor(zoomLevel); + else + frame->setTextZoomFactor(zoomLevel); +} + +/** + * webkit_web_view_set_zoom_level: + * @webView: a #WebKitWebView + * @zoom_level: the new zoom level + * + * Sets the zoom level of @web_view, i.e. the factor by which elements in + * the page are scaled with respect to their original size. + * If the "full-content-zoom" property is set to %FALSE (the default) + * the zoom level changes the text size, or if %TRUE, scales all + * elements in the page. + * + * Since: 1.0.1 + */ +void webkit_web_view_set_zoom_level(WebKitWebView* webView, gfloat zoomLevel) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + webkit_web_view_apply_zoom_level(webView, zoomLevel); + g_object_notify(G_OBJECT(webView), "zoom-level"); +} + +/** + * webkit_web_view_zoom_in: + * @webView: a #WebKitWebView + * + * Increases the zoom level of @web_view. The current zoom + * level is incremented by the value of the "zoom-step" + * property of the #WebKitWebSettings associated with @web_view. + * + * Since: 1.0.1 + */ +void webkit_web_view_zoom_in(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitWebViewPrivate* priv = webView->priv; + gfloat zoomMultiplierRatio; + g_object_get(priv->webSettings.get(), "zoom-step", &zoomMultiplierRatio, NULL); + + webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) + zoomMultiplierRatio); +} + +/** + * webkit_web_view_zoom_out: + * @webView: a #WebKitWebView + * + * Decreases the zoom level of @web_view. The current zoom + * level is decremented by the value of the "zoom-step" + * property of the #WebKitWebSettings associated with @web_view. + * + * Since: 1.0.1 + */ +void webkit_web_view_zoom_out(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitWebViewPrivate* priv = webView->priv; + gfloat zoomMultiplierRatio; + g_object_get(priv->webSettings.get(), "zoom-step", &zoomMultiplierRatio, NULL); + + webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) - zoomMultiplierRatio); +} + +/** + * webkit_web_view_get_full_content_zoom: + * @webView: a #WebKitWebView + * + * Returns whether the zoom level affects only text or all elements. + * + * Return value: %FALSE if only text should be scaled (the default), + * %TRUE if the full content of the view should be scaled. + * + * Since: 1.0.1 + */ +gboolean webkit_web_view_get_full_content_zoom(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + WebKitWebViewPrivate* priv = webView->priv; + return priv->zoomFullContent; +} + +/** + * webkit_web_view_set_full_content_zoom: + * @webView: a #WebKitWebView + * @full_content_zoom: %FALSE if only text should be scaled (the default), + * %TRUE if the full content of the view should be scaled. + * + * Sets whether the zoom level affects only text or all elements. + * + * Since: 1.0.1 + */ +void webkit_web_view_set_full_content_zoom(WebKitWebView* webView, gboolean zoomFullContent) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + WebKitWebViewPrivate* priv = webView->priv; + if (priv->zoomFullContent == zoomFullContent) + return; + + Frame* frame = core(webView)->mainFrame(); + if (!frame) + return; + + gfloat zoomLevel = priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor(); + + priv->zoomFullContent = zoomFullContent; + if (priv->zoomFullContent) + frame->setPageAndTextZoomFactors(zoomLevel, 1); + else + frame->setPageAndTextZoomFactors(1, zoomLevel); + + g_object_notify(G_OBJECT(webView), "full-content-zoom"); +} + +/** + * webkit_web_view_get_load_status: + * @webView: a #WebKitWebView + * + * Determines the current status of the load. + * + * Since: 1.1.7 + */ +WebKitLoadStatus webkit_web_view_get_load_status(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), WEBKIT_LOAD_FINISHED); + + WebKitWebViewPrivate* priv = webView->priv; + return priv->loadStatus; +} + +/** + * webkit_web_view_get_progress: + * @webView: a #WebKitWebView + * + * Determines the current progress of the load. + * + * Since: 1.1.7 + */ +gdouble webkit_web_view_get_progress(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1.0); + + return core(webView)->progress()->estimatedProgress(); +} + +/** + * webkit_web_view_get_encoding: + * @webView: a #WebKitWebView + * + * Returns the default encoding of the #WebKitWebView. + * + * Return value: the default encoding + * + * Since: 1.1.1 + */ +const gchar* webkit_web_view_get_encoding(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + String encoding = core(webView)->mainFrame()->loader()->writer()->encoding(); + if (encoding.isEmpty()) + return 0; + webView->priv->encoding = encoding.utf8(); + return webView->priv->encoding.data(); +} + +/** + * webkit_web_view_set_custom_encoding: + * @webView: a #WebKitWebView + * @encoding: the new encoding, or %NULL to restore the default encoding + * + * Sets the current #WebKitWebView encoding, without modifying the default one, + * and reloads the page. + * + * Since: 1.1.1 + */ +void webkit_web_view_set_custom_encoding(WebKitWebView* webView, const char* encoding) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + core(webView)->mainFrame()->loader()->reloadWithOverrideEncoding(String::fromUTF8(encoding)); +} + +/** + * webkit_web_view_get_custom_encoding: + * @webView: a #WebKitWebView + * + * Returns the current encoding of the #WebKitWebView, not the default-encoding + * of WebKitWebSettings. + * + * Return value: a string containing the current custom encoding for @web_view, or %NULL if there's none set. + * + * Since: 1.1.1 + */ +const char* webkit_web_view_get_custom_encoding(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + String overrideEncoding = core(webView)->mainFrame()->loader()->documentLoader()->overrideEncoding(); + if (overrideEncoding.isEmpty()) + return 0; + webView->priv->customEncoding = overrideEncoding.utf8(); + return webView->priv->customEncoding.data(); +} + +/** + * webkit_web_view_set_view_mode: + * @webView: the #WebKitWebView that will have its view mode set + * @mode: the %WebKitWebViewViewMode to be set + * + * Sets the view-mode property of the #WebKitWebView. Check the + * property's documentation for more information. + * + * Since: 1.3.4 + */ +void webkit_web_view_set_view_mode(WebKitWebView* webView, WebKitWebViewViewMode mode) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + Page* page = core(webView); + + switch (mode) { + case WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING: + page->setViewMode(Page::ViewModeFloating); + break; + case WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN: + page->setViewMode(Page::ViewModeFullscreen); + break; + case WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED: + page->setViewMode(Page::ViewModeMaximized); + break; + case WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED: + page->setViewMode(Page::ViewModeMinimized); + break; + default: + page->setViewMode(Page::ViewModeWindowed); + break; + } +} + +/** + * webkit_web_view_get_view_mode: + * @webView: the #WebKitWebView to obtain the view mode from + * + * Gets the value of the view-mode property of the + * #WebKitWebView. Check the property's documentation for more + * information. + * + * Return value: the %WebKitWebViewViewMode currently set for the + * #WebKitWebView. + * + * Since: 1.3.4 + */ +WebKitWebViewViewMode webkit_web_view_get_view_mode(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED); + + Page* page = core(webView); + Page::ViewMode mode = page->viewMode(); + + if (mode == Page::ViewModeFloating) + return WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING; + + if (mode == Page::ViewModeFullscreen) + return WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN; + + if (mode == Page::ViewModeMaximized) + return WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED; + + if (mode == Page::ViewModeMinimized) + return WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED; + + return WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED; +} + +/** + * webkit_web_view_move_cursor: + * @webView: a #WebKitWebView + * @step: a #GtkMovementStep + * @count: integer describing the direction of the movement. 1 for forward, -1 for backwards. + * + * Move the cursor in @view as described by @step and @count. + * + * Since: 1.1.4 + */ +void webkit_web_view_move_cursor(WebKitWebView* webView, GtkMovementStep step, gint count) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + g_return_if_fail(step == GTK_MOVEMENT_VISUAL_POSITIONS || + step == GTK_MOVEMENT_DISPLAY_LINES || + step == GTK_MOVEMENT_PAGES || + step == GTK_MOVEMENT_BUFFER_ENDS); + g_return_if_fail(count == 1 || count == -1); + + gboolean handled; + g_signal_emit(webView, webkit_web_view_signals[MOVE_CURSOR], 0, step, count, &handled); +} + +/** + * webkit_web_view_can_undo: + * @webView: a #WebKitWebView + * + * Determines whether or not it is currently possible to undo the last + * editing command in the view. + * + * Return value: %TRUE if a undo can be done, %FALSE if not + * + * Since: 1.1.14 + */ +gboolean webkit_web_view_can_undo(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return frame->editor()->canUndo(); +} + +/** + * webkit_web_view_undo: + * @webView: a #WebKitWebView + * + * Undoes the last editing command in the view, if possible. + * + * Since: 1.1.14 + */ +void webkit_web_view_undo(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (webkit_web_view_can_undo(webView)) + g_signal_emit(webView, webkit_web_view_signals[UNDO], 0); +} + +/** + * webkit_web_view_can_redo: + * @webView: a #WebKitWebView + * + * Determines whether or not it is currently possible to redo the last + * editing command in the view. + * + * Return value: %TRUE if a redo can be done, %FALSE if not + * + * Since: 1.1.14 + */ +gboolean webkit_web_view_can_redo(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + return frame->editor()->canRedo(); +} + +/** + * webkit_web_view_redo: + * @webView: a #WebKitWebView + * + * Redoes the last editing command in the view, if possible. + * + * Since: 1.1.14 + */ +void webkit_web_view_redo(WebKitWebView* webView) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (webkit_web_view_can_redo(webView)) + g_signal_emit(webView, webkit_web_view_signals[REDO], 0); +} + + +/** + * webkit_web_view_set_view_source_mode: + * @webView: a #WebKitWebView + * @view_source_mode: the mode to turn on or off view source mode + * + * Set whether the view should be in view source mode. Setting this mode to + * %TRUE before loading a URI will display the source of the web page in a + * nice and readable format. + * + * Since: 1.1.14 + */ +void webkit_web_view_set_view_source_mode (WebKitWebView* webView, gboolean mode) +{ + g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); + + if (Frame* mainFrame = core(webView)->mainFrame()) + mainFrame->setInViewSourceMode(mode); +} + +/** + * webkit_web_view_get_view_source_mode: + * @webView: a #WebKitWebView + * + * Return value: %TRUE if @web_view is in view source mode, %FALSE otherwise. + * + * Since: 1.1.14 + */ +gboolean webkit_web_view_get_view_source_mode (WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); + + if (Frame* mainFrame = core(webView)->mainFrame()) + return mainFrame->inViewSourceMode(); + + return FALSE; +} + +// Internal subresource management +void webkit_web_view_add_main_resource(WebKitWebView* webView, const char* identifier, WebKitWebResource* webResource) +{ + WebKitWebViewPrivate* priv = webView->priv; + + priv->mainResource = adoptGRef(webResource); + priv->mainResourceIdentifier = identifier; +} + +void webkit_web_view_add_resource(WebKitWebView* webView, const char* identifier, WebKitWebResource* webResource) +{ + WebKitWebViewPrivate* priv = webView->priv; + g_hash_table_insert(priv->subResources.get(), g_strdup(identifier), webResource); +} + +void webkit_web_view_remove_resource(WebKitWebView* webView, const char* identifier) +{ + WebKitWebViewPrivate* priv = webView->priv; + if (g_str_equal(identifier, priv->mainResourceIdentifier.data())) { + priv->mainResourceIdentifier = ""; + priv->mainResource = 0; + } else + g_hash_table_remove(priv->subResources.get(), identifier); +} + +WebKitWebResource* webkit_web_view_get_resource(WebKitWebView* webView, char* identifier) +{ + WebKitWebViewPrivate* priv = webView->priv; + gpointer webResource = 0; + gboolean resourceFound = g_hash_table_lookup_extended(priv->subResources.get(), identifier, NULL, &webResource); + + // The only resource we do not store in this hash table is the + // main! If we did not find a request, it probably means the load + // has been interrupted while while a resource was still being + // loaded. + if (!resourceFound && !g_str_equal(identifier, priv->mainResourceIdentifier.data())) + return 0; + + if (!webResource) + return webkit_web_view_get_main_resource(webView); + + return WEBKIT_WEB_RESOURCE(webResource); +} + +WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView* webView) +{ + return webView->priv->mainResource.get(); +} + +void webkit_web_view_clear_resources(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + + if (priv->subResources) + g_hash_table_remove_all(priv->subResources.get()); +} + +GList* webkit_web_view_get_subresources(WebKitWebView* webView) +{ + WebKitWebViewPrivate* priv = webView->priv; + GList* subResources = g_hash_table_get_values(priv->subResources.get()); + return g_list_remove(subResources, priv->mainResource.get()); +} + +/* From EventHandler.cpp */ +static IntPoint documentPointForWindowPoint(Frame* frame, const IntPoint& windowPoint) +{ + FrameView* view = frame->view(); + // FIXME: Is it really OK to use the wrong coordinates here when view is 0? + // Historically the code would just crash; this is clearly no worse than that. + return view ? view->windowToContents(windowPoint) : windowPoint; +} + +void webkit_web_view_set_tooltip_text(WebKitWebView* webView, const char* tooltip) +{ +#if GTK_CHECK_VERSION(2, 12, 0) + WebKitWebViewPrivate* priv = webView->priv; + if (tooltip && *tooltip != '\0') { + priv->tooltipText = tooltip; + gtk_widget_set_has_tooltip(GTK_WIDGET(webView), TRUE); + } else { + priv->tooltipText = ""; + gtk_widget_set_has_tooltip(GTK_WIDGET(webView), FALSE); + } + + gtk_widget_trigger_tooltip_query(GTK_WIDGET(webView)); +#else + // TODO: Support older GTK+ versions + // See http://bugs.webkit.org/show_bug.cgi?id=15793 + notImplemented(); +#endif +} + +/** + * webkit_web_view_get_hit_test_result: + * @webView: a #WebKitWebView + * @event: a #GdkEventButton + * + * Does a 'hit test' in the coordinates specified by @event to figure + * out context information about that position in the @webView. + * + * Returns: (transfer none): a newly created #WebKitHitTestResult with the context of the + * specified position. + * + * Since: 1.1.15 + **/ +WebKitHitTestResult* webkit_web_view_get_hit_test_result(WebKitWebView* webView, GdkEventButton* event) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); + g_return_val_if_fail(event, NULL); + + PlatformMouseEvent mouseEvent = PlatformMouseEvent(event); + Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); + HitTestRequest request(HitTestRequest::Active); + IntPoint documentPoint = documentPointForWindowPoint(frame, mouseEvent.pos()); + MouseEventWithHitTestResults mev = frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent); + + return kit(mev.hitTestResult()); +} + +/** + * webkit_web_view_get_icon_uri: + * @webView: the #WebKitWebView object + * + * Obtains the URI for the favicon for the given #WebKitWebView, or + * %NULL if there is none. + * + * Return value: the URI for the favicon, or %NULL + * + * Since: 1.1.18 + */ +G_CONST_RETURN gchar* webkit_web_view_get_icon_uri(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + String iconURL = iconDatabase()->iconURLForPageURL(core(webView)->mainFrame()->loader()->url().prettyURL()); + webView->priv->iconURI = iconURL.utf8(); + return webView->priv->iconURI.data(); +} + +/** + * webkit_web_view_get_dom_document: + * @webView: a #WebKitWebView + * + * Returns: (transfer none): the #WebKitDOMDocument currently loaded in the @webView + * + * Since: 1.3.1 + **/ +WebKitDOMDocument* +webkit_web_view_get_dom_document(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + + Frame* coreFrame = core(webView)->mainFrame(); + if (!coreFrame) + return 0; + + Document* doc = coreFrame->document(); + if (!doc) + return 0; + + return kit(doc); +} + +GtkMenu* webkit_web_view_get_context_menu(WebKitWebView* webView) +{ + g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0); + +#if ENABLE(CONTEXT_MENUS) + ContextMenu* menu = core(webView)->contextMenuController()->contextMenu(); + if (!menu) + return 0; + return menu->platformDescription(); +#else + return 0; +#endif +} + +void webViewEnterFullscreen(WebKitWebView* webView, Node* node) +{ + if (!node->hasTagName(HTMLNames::videoTag)) + return; + +#if ENABLE(VIDEO) + HTMLMediaElement* videoElement = static_cast<HTMLMediaElement*>(node); + WebKitWebViewPrivate* priv = webView->priv; + + // First exit Fullscreen for the old mediaElement. + if (priv->fullscreenVideoController) + priv->fullscreenVideoController->exitFullscreen(); + + priv->fullscreenVideoController = new FullscreenVideoController; + priv->fullscreenVideoController->setMediaElement(videoElement); + priv->fullscreenVideoController->enterFullscreen(); +#endif +} + +void webViewExitFullscreen(WebKitWebView* webView) +{ +#if ENABLE(VIDEO) + WebKitWebViewPrivate* priv = webView->priv; + if (priv->fullscreenVideoController) + priv->fullscreenVideoController->exitFullscreen(); +#endif +} + +namespace WebKit { + +WebCore::Page* core(WebKitWebView* webView) +{ + if (!webView) + return 0; + + WebKitWebViewPrivate* priv = webView->priv; + return priv ? priv->corePage : 0; +} + +WebKitWebView* kit(WebCore::Page* corePage) +{ + if (!corePage) + return 0; + + ASSERT(corePage->chrome()); + WebKit::ChromeClient* client = static_cast<WebKit::ChromeClient*>(corePage->chrome()->client()); + return client ? client->webView() : 0; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebview.h b/Source/WebKit/gtk/webkit/webkitwebview.h new file mode 100644 index 0000000..1838bfe --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebview.h @@ -0,0 +1,408 @@ +/* + * Copyright (C) 2007 Holger Hans Peter Freyther + * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com> + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebview_h +#define webkitwebview_h + +#include <gtk/gtk.h> +#include <libsoup/soup.h> +#include <JavaScriptCore/JSBase.h> + +#include <webkit/webkitdefines.h> +#include <webkit/webkitdom.h> +#include <webkit/webkitwebbackforwardlist.h> +#include <webkit/webkitwebframe.h> +#include <webkit/webkitwebhistoryitem.h> +#include <webkit/webkitwebsettings.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_VIEW (webkit_web_view_get_type()) +#define WEBKIT_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebView)) +#define WEBKIT_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass)) +#define WEBKIT_IS_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_VIEW)) +#define WEBKIT_IS_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_VIEW)) +#define WEBKIT_WEB_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass)) + +typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate; + +typedef enum { + WEBKIT_NAVIGATION_RESPONSE_ACCEPT, + WEBKIT_NAVIGATION_RESPONSE_IGNORE, + WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD +} WebKitNavigationResponse; + +typedef enum +{ + WEBKIT_WEB_VIEW_TARGET_INFO_HTML, + WEBKIT_WEB_VIEW_TARGET_INFO_TEXT, + WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE, + WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST, + WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL +} WebKitWebViewTargetInfo; + +typedef enum +{ + WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED, + WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING, + WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN, + WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED, + WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED +} WebKitWebViewViewMode; + +typedef enum +{ + WEBKIT_SELECTION_AFFINITY_UPSTREAM, + WEBKIT_SELECTION_AFFINITY_DOWNSTREAM, +} WebKitSelectionAffinity; + +typedef enum +{ + WEBKIT_INSERT_ACTION_TYPED, + WEBKIT_INSERT_ACTION_PASTED, + WEBKIT_INSERT_ACTION_DROPPED, +} WebKitInsertAction; + +struct _WebKitWebView { + GtkContainer parent_instance; + + /*< private >*/ + WebKitWebViewPrivate *priv; +}; + +struct _WebKitWebViewClass { + GtkContainerClass parent_class; + + /*< public >*/ + /* + * default handler/virtual methods + */ + WebKitWebView * (* create_web_view) (WebKitWebView *web_view, + WebKitWebFrame *web_frame); + + gboolean (* web_view_ready) (WebKitWebView* web_view); + + gboolean (* close_web_view) (WebKitWebView* web_view); + + WebKitNavigationResponse (* navigation_requested) (WebKitWebView *web_view, + WebKitWebFrame *frame, + WebKitNetworkRequest *request); + void (* window_object_cleared) (WebKitWebView *web_view, + WebKitWebFrame *frame, + JSGlobalContextRef context, + JSObjectRef window_object); + gchar * (* choose_file) (WebKitWebView *web_view, + WebKitWebFrame *frame, + const gchar *old_file); + gboolean (* script_alert) (WebKitWebView *web_view, + WebKitWebFrame *frame, + const gchar *alert_message); + gboolean (* script_confirm) (WebKitWebView *web_view, + WebKitWebFrame *frame, + const gchar *confirm_message, + gboolean *did_confirm); + gboolean (* script_prompt) (WebKitWebView *web_view, + WebKitWebFrame *frame, + const gchar *message, + const gchar *default_value, + gchar* *value); + gboolean (* console_message) (WebKitWebView *web_view, + const gchar *message, + guint line_number, + const gchar* source_id); + void (* select_all) (WebKitWebView *web_view); + void (* cut_clipboard) (WebKitWebView *web_view); + void (* copy_clipboard) (WebKitWebView *web_view); + void (* paste_clipboard) (WebKitWebView *web_view); + gboolean (* move_cursor) (WebKitWebView *web_view, + GtkMovementStep step, + gint count); + + /* + * internal + */ + void (* set_scroll_adjustments) (WebKitWebView *web_view, + GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment); + + void (* undo) (WebKitWebView *web_view); + void (* redo) (WebKitWebView *web_view); + gboolean (* should_allow_editing_action) (WebKitWebView *web_view); + + /* Padding for future expansion */ + void (*_webkit_reserved0) (void); + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); +}; + +WEBKIT_API GType +webkit_web_view_get_type (void); + +WEBKIT_API GtkWidget * +webkit_web_view_new (void); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_view_get_title (WebKitWebView *webView); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_view_get_uri (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_maintains_back_forward_list (WebKitWebView *webView, + gboolean flag); + +WEBKIT_API WebKitWebBackForwardList * +webkit_web_view_get_back_forward_list (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_go_to_back_forward_item (WebKitWebView *webView, + WebKitWebHistoryItem *item); + +WEBKIT_API gboolean +webkit_web_view_can_go_back (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_go_back_or_forward (WebKitWebView *webView, + gint steps); + +WEBKIT_API gboolean +webkit_web_view_can_go_forward (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_go_back (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_go_back_or_forward (WebKitWebView *webView, + gint steps); + +WEBKIT_API void +webkit_web_view_go_forward (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_stop_loading (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_open (WebKitWebView *webView, + const gchar *uri); + +WEBKIT_API void +webkit_web_view_reload (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_reload_bypass_cache (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_load_uri (WebKitWebView *webView, + const gchar *uri); + +WEBKIT_API void +webkit_web_view_load_string (WebKitWebView *webView, + const gchar *content, + const gchar *mime_type, + const gchar *encoding, + const gchar *base_uri); + +WEBKIT_API void +webkit_web_view_load_html_string (WebKitWebView *webView, + const gchar *content, + const gchar *base_uri); + +WEBKIT_API void +webkit_web_view_load_request (WebKitWebView *webView, + WebKitNetworkRequest *request); + +WEBKIT_API gboolean +webkit_web_view_search_text (WebKitWebView *webView, + const gchar *text, + gboolean case_sensitive, + gboolean forward, + gboolean wrap); + +WEBKIT_API guint +webkit_web_view_mark_text_matches (WebKitWebView *webView, + const gchar *string, + gboolean case_sensitive, + guint limit); + +WEBKIT_API void +webkit_web_view_set_highlight_text_matches (WebKitWebView *webView, + gboolean highlight); + +WEBKIT_API void +webkit_web_view_unmark_text_matches (WebKitWebView *webView); + +WEBKIT_API WebKitWebFrame * +webkit_web_view_get_main_frame (WebKitWebView *webView); + +WEBKIT_API WebKitWebFrame * +webkit_web_view_get_focused_frame (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_execute_script (WebKitWebView *webView, + const gchar *script); + +WEBKIT_API gboolean +webkit_web_view_can_cut_clipboard (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_copy_clipboard (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_paste_clipboard (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_cut_clipboard (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_copy_clipboard (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_paste_clipboard (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_delete_selection (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_has_selection (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_select_all (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_get_editable (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_editable (WebKitWebView *webView, + gboolean flag); + +WEBKIT_API GtkTargetList * +webkit_web_view_get_copy_target_list (WebKitWebView *webView); + +WEBKIT_API GtkTargetList * +webkit_web_view_get_paste_target_list (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_settings (WebKitWebView *webView, + WebKitWebSettings *settings); + +WEBKIT_API WebKitWebSettings * +webkit_web_view_get_settings (WebKitWebView *webView); + +WEBKIT_API WebKitWebInspector * +webkit_web_view_get_inspector (WebKitWebView *webView); + +WEBKIT_API WebKitWebWindowFeatures* +webkit_web_view_get_window_features (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_show_mime_type (WebKitWebView *webView, + const gchar *mime_type); + +WEBKIT_API gboolean +webkit_web_view_get_transparent (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_transparent (WebKitWebView *webView, + gboolean flag); + +WEBKIT_API gfloat +webkit_web_view_get_zoom_level (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_zoom_level (WebKitWebView *webView, + gfloat zoom_level); + +WEBKIT_API void +webkit_web_view_zoom_in (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_zoom_out (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_get_full_content_zoom (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_full_content_zoom (WebKitWebView *webView, + gboolean full_content_zoom); + +WEBKIT_API const gchar* +webkit_web_view_get_encoding (WebKitWebView * webView); + +WEBKIT_API void +webkit_web_view_set_custom_encoding (WebKitWebView * webView, + const gchar * encoding); + +WEBKIT_API const char* +webkit_web_view_get_custom_encoding (WebKitWebView * webView); + +WEBKIT_API void +webkit_web_view_set_view_mode (WebKitWebView *webView, + WebKitWebViewViewMode mode); + +WEBKIT_API WebKitWebViewViewMode +webkit_web_view_get_view_mode (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_move_cursor (WebKitWebView * webView, + GtkMovementStep step, + gint count); + +WEBKIT_API WebKitLoadStatus +webkit_web_view_get_load_status (WebKitWebView *webView); + +WEBKIT_API gdouble +webkit_web_view_get_progress (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_undo (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_undo (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_redo (WebKitWebView *webView); + +WEBKIT_API gboolean +webkit_web_view_can_redo (WebKitWebView *webView); + +WEBKIT_API void +webkit_web_view_set_view_source_mode (WebKitWebView *webView, + gboolean view_source_mode); + +WEBKIT_API gboolean +webkit_web_view_get_view_source_mode (WebKitWebView *webView); + +WEBKIT_API WebKitHitTestResult* +webkit_web_view_get_hit_test_result (WebKitWebView *webView, + GdkEventButton *event); + +WEBKIT_API G_CONST_RETURN gchar * +webkit_web_view_get_icon_uri (WebKitWebView *webView); + +WEBKIT_API WebKitDOMDocument * +webkit_web_view_get_dom_document (WebKitWebView *webView); + +WEBKIT_API WebKitViewportAttributes* +webkit_web_view_get_viewport_attributes (WebKitWebView *webView); + +G_END_DECLS + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebviewprivate.h b/Source/WebKit/gtk/webkit/webkitwebviewprivate.h new file mode 100644 index 0000000..03e632a --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebviewprivate.h @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008, 2010 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebviewprivate_h +#define webkitwebviewprivate_h + +#include "DataObjectGtk.h" +#include "FullscreenVideoController.h" +#include "GOwnPtr.h" +#include "ResourceHandle.h" +#include <webkit/webkitwebview.h> + +namespace WebKit { + +WebCore::Page* core(WebKitWebView*); +WebKitWebView* kit(WebCore::Page*); + + +typedef struct DroppingContext_ { + WebKitWebView* webView; + GdkDragContext* gdkContext; + RefPtr<WebCore::DataObjectGtk> dataObject; + WebCore::IntPoint lastMotionPosition; + int pendingDataRequests; + bool dropHappened; +} DroppingContext; + +} + +extern "C" { + +#define WEBKIT_WEB_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate)) +typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate; +struct _WebKitWebViewPrivate { + WebCore::Page* corePage; + GRefPtr<WebKitWebSettings> webSettings; + GRefPtr<WebKitWebInspector> webInspector; + GRefPtr<WebKitViewportAttributes> viewportAttributes; + GRefPtr<WebKitWebWindowFeatures> webWindowFeatures; + + WebKitWebFrame* mainFrame; + GRefPtr<WebKitWebBackForwardList> backForwardList; + + GtkMenu* currentMenu; + gint lastPopupXPosition; + gint lastPopupYPosition; + + HashSet<GtkWidget*> children; + bool editable; + GRefPtr<GtkIMContext> imContext; + + gboolean transparent; + + GRefPtr<GtkAdjustment> horizontalAdjustment; + GRefPtr<GtkAdjustment> verticalAdjustment; + +#ifndef GTK_API_VERSION_2 + // GtkScrollablePolicy needs to be checked when + // driving the scrollable adjustment values + GtkScrollablePolicy horizontalScrollingPolicy; + GtkScrollablePolicy verticalScrollingPolicy; +#endif + + gboolean zoomFullContent; + WebKitLoadStatus loadStatus; + CString encoding; + CString customEncoding; + + CString iconURI; + + gboolean disposing; + gboolean usePrimaryForPaste; + +#if ENABLE(VIDEO) + FullscreenVideoController* fullscreenVideoController; +#endif + + // These are hosted here because the DataSource object is + // created too late in the frame loading process. + GRefPtr<WebKitWebResource> mainResource; + CString mainResourceIdentifier; + GRefPtr<GHashTable> subResources; + CString tooltipText; + WebCore::IntRect tooltipArea; + + int currentClickCount; + WebCore::IntPoint previousClickPoint; + guint previousClickButton; + guint32 previousClickTime; + HashMap<GdkDragContext*, RefPtr<WebCore::DataObjectGtk> > draggingDataObjects; + HashMap<GdkDragContext*, WebKit::DroppingContext*> droppingContexts; +}; + +void webkit_web_view_notify_ready(WebKitWebView*); + +void webkit_web_view_request_download(WebKitWebView*, WebKitNetworkRequest*, const WebCore::ResourceResponse& = WebCore::ResourceResponse(), WebCore::ResourceHandle* = 0); + +void webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*); +void webkit_web_view_add_main_resource(WebKitWebView*, const char*, WebKitWebResource*); +void webkit_web_view_remove_resource(WebKitWebView*, const char*); +WebKitWebResource* webkit_web_view_get_resource(WebKitWebView*, char*); +WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView*); +void webkit_web_view_clear_resources(WebKitWebView*); +GList* webkit_web_view_get_subresources(WebKitWebView*); + +void webkit_web_view_set_tooltip_text(WebKitWebView*, const char*); +GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*); + +WEBKIT_API gchar* webkit_web_view_get_selected_text(WebKitWebView*); +bool webkit_web_view_use_primary_for_paste(WebKitWebView*); + +void webViewEnterFullscreen(WebKitWebView* webView, WebCore::Node*); +void webViewExitFullscreen(WebKitWebView* webView); + +} + +#endif diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp new file mode 100644 index 0000000..93e08ac --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp @@ -0,0 +1,449 @@ +/* + * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org> + * Copyright (C) 2008 Holger Hans Peter Freyther + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "webkitwebwindowfeatures.h" + +#include "WindowFeatures.h" +#include "webkitglobalsprivate.h" +#include "webkitwebwindowfeaturesprivate.h" + +/** + * SECTION:webkitwebwindowfeatures + * @short_description: Window properties of a #WebKitWebView + * @see_also: #WebKitWebView::web-view-ready + * + * The content of a #WebKitWebView can request to change certain + * properties of a #WebKitWebView. This can include the x, y position + * of the window, the width and height but also if a toolbar, + * scrollbar, statusbar, locationbar should be visible to the user, + * the request to show the #WebKitWebView fullscreen. + * + * In the normal case one will use #webkit_web_view_get_window_features + * to get the #WebKitWebWindowFeatures and then monitor the property + * changes. Be aware that the #WebKitWebWindowFeatures might change + * before #WebKitWebView::web-view-ready signal is emitted. + * To be safe listen to the notify::window-features signal of the #WebKitWebView + * and reconnect the signals whenever the #WebKitWebWindowFeatures of + * a #WebKitWebView changes. + * + * <informalexample><programlisting> + * /<!-- -->* Get the current WebKitWebWindowFeatures *<!-- -->/ + * WebKitWebWindowFeatures *features = webkit_web_view_get_window_features (my_webview); + * + * /<!-- -->* Connect to the property changes *<!-- -->/ + * g_signal_connect (G_OBJECT(features), "notify::menubar-visible", G_CALLBACK(make_menu_bar_visible), NULL); + * g_signal_connect (G_OBJECT(features), "notify::statusbar-visible", G_CALLBACK(make_status_bar_visible), NULL); + * + * </programlisting></informalexample> + */ + +enum { + PROP_0, + + PROP_X, + PROP_Y, + PROP_WIDTH, + PROP_HEIGHT, + PROP_TOOLBAR_VISIBLE, + PROP_STATUSBAR_VISIBLE, + PROP_SCROLLBAR_VISIBLE, + PROP_MENUBAR_VISIBLE, + PROP_LOCATIONBAR_VISIBLE, + PROP_FULLSCREEN, +}; + +G_DEFINE_TYPE(WebKitWebWindowFeatures, webkit_web_window_features, G_TYPE_OBJECT) + +struct _WebKitWebWindowFeaturesPrivate { + gint x; + gint y; + gint width; + gint height; + + gboolean toolbar_visible; + gboolean statusbar_visible; + gboolean scrollbar_visible; + gboolean menubar_visible; + gboolean locationbar_visible; + + gboolean fullscreen; +}; + +#define WEBKIT_WEB_WINDOW_FEATURES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesPrivate)) + +static void webkit_web_window_features_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_window_features_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); + +static void webkit_web_window_features_class_init(WebKitWebWindowFeaturesClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + gobject_class->set_property = webkit_web_window_features_set_property; + gobject_class->get_property = webkit_web_window_features_get_property; + + GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + webkitInit(); + + /** + * WebKitWebWindowFeatures:x: + * + * The starting x position of the window on the screen. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_X, + g_param_spec_int( + "x", + "x", + "The starting x position of the window on the screen.", + -1, + G_MAXINT, + -1, + flags)); + + /** + * WebKitWebWindowFeatures:y: + * + * The starting y position of the window on the screen. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_Y, + g_param_spec_int( + "y", + "y", + "The starting y position of the window on the screen.", + -1, + G_MAXINT, + -1, + flags)); + + /** + * WebKitWebWindowFeatures:width: + * + * The width of the window on the screen. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_WIDTH, + g_param_spec_int( + "width", + "Width", + "The width of the window on the screen.", + -1, + G_MAXINT, + -1, + flags)); + + /** + * WebKitWebWindowFeatures:height: + * + * The height of the window on the screen. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_HEIGHT, + g_param_spec_int( + "height", + "Height", + "The height of the window on the screen.", + -1, + G_MAXINT, + -1, + flags)); + + /** + * WebKitWebWindowFeatures:toolbar-visible: + * + * Controls whether the toolbar should be visible for the window. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_TOOLBAR_VISIBLE, + g_param_spec_boolean( + "toolbar-visible", + "Toolbar Visible", + "Controls whether the toolbar should be visible for the window.", + TRUE, + flags)); + + /** + * WebKitWebWindowFeatures:statusbar-visible: + * + * Controls whether the statusbar should be visible for the window. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_STATUSBAR_VISIBLE, + g_param_spec_boolean( + "statusbar-visible", + "Statusbar Visible", + "Controls whether the statusbar should be visible for the window.", + TRUE, + flags)); + + /** + * WebKitWebWindowFeatures:scrollbar-visible: + * + * Controls whether the scrollbars should be visible for the window. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_SCROLLBAR_VISIBLE, + g_param_spec_boolean( + "scrollbar-visible", + "Scrollbar Visible", + "Controls whether the scrollbars should be visible for the window.", + TRUE, + flags)); + + /** + * WebKitWebWindowFeatures:menubar-visible: + * + * Controls whether the menubar should be visible for the window. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_MENUBAR_VISIBLE, + g_param_spec_boolean( + "menubar-visible", + "Menubar Visible", + "Controls whether the menubar should be visible for the window.", + TRUE, + flags)); + + /** + * WebKitWebWindowFeatures:locationbar-visible: + * + * Controls whether the locationbar should be visible for the window. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_LOCATIONBAR_VISIBLE, + g_param_spec_boolean( + "locationbar-visible", + "Locationbar Visible", + "Controls whether the locationbar should be visible for the window.", + TRUE, + flags)); + + /** + * WebKitWebWindowFeatures:fullscreen: + * + * Controls whether window will be displayed fullscreen. + * + * Since: 1.0.3 + */ + g_object_class_install_property(gobject_class, + PROP_FULLSCREEN, + g_param_spec_boolean( + "fullscreen", + "Fullscreen", + "Controls whether window will be displayed fullscreen.", + FALSE, + flags)); + + + g_type_class_add_private(klass, sizeof(WebKitWebWindowFeaturesPrivate)); +} + +static void webkit_web_window_features_init(WebKitWebWindowFeatures* web_window_features) +{ + web_window_features->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_window_features, WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesPrivate); +} + +static void webkit_web_window_features_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebWindowFeatures* web_window_features = WEBKIT_WEB_WINDOW_FEATURES(object); + WebKitWebWindowFeaturesPrivate* priv = web_window_features->priv; + + switch(prop_id) { + case PROP_X: + priv->x = g_value_get_int(value); + break; + case PROP_Y: + priv->y = g_value_get_int(value); + break; + case PROP_WIDTH: + priv->width = g_value_get_int(value); + break; + case PROP_HEIGHT: + priv->height = g_value_get_int(value); + break; + case PROP_TOOLBAR_VISIBLE: + priv->toolbar_visible = g_value_get_boolean(value); + break; + case PROP_STATUSBAR_VISIBLE: + priv->statusbar_visible = g_value_get_boolean(value); + break; + case PROP_SCROLLBAR_VISIBLE: + priv->scrollbar_visible = g_value_get_boolean(value); + break; + case PROP_MENUBAR_VISIBLE: + priv->menubar_visible = g_value_get_boolean(value); + break; + case PROP_LOCATIONBAR_VISIBLE: + priv->locationbar_visible = g_value_get_boolean(value); + break; + case PROP_FULLSCREEN: + priv->fullscreen = g_value_get_boolean(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_window_features_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebWindowFeatures* web_window_features = WEBKIT_WEB_WINDOW_FEATURES(object); + WebKitWebWindowFeaturesPrivate* priv = web_window_features->priv; + + switch (prop_id) { + case PROP_X: + g_value_set_int(value, priv->x); + break; + case PROP_Y: + g_value_set_int(value, priv->y); + break; + case PROP_WIDTH: + g_value_set_int(value, priv->width); + break; + case PROP_HEIGHT: + g_value_set_int(value, priv->height); + break; + case PROP_TOOLBAR_VISIBLE: + g_value_set_boolean(value, priv->toolbar_visible); + break; + case PROP_STATUSBAR_VISIBLE: + g_value_set_boolean(value, priv->statusbar_visible); + break; + case PROP_SCROLLBAR_VISIBLE: + g_value_set_boolean(value, priv->scrollbar_visible); + break; + case PROP_MENUBAR_VISIBLE: + g_value_set_boolean(value, priv->menubar_visible); + break; + case PROP_LOCATIONBAR_VISIBLE: + g_value_set_boolean(value, priv->locationbar_visible); + break; + case PROP_FULLSCREEN: + g_value_set_boolean(value, priv->fullscreen); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +/** + * webkit_web_window_features_new: + * + * Creates a new #WebKitWebWindowFeatures instance with default values. It must + * be manually attached to a WebView. + * + * Returns: a new #WebKitWebWindowFeatures instance + * + * Since: 1.0.3 + */ +WebKitWebWindowFeatures* webkit_web_window_features_new() +{ + return WEBKIT_WEB_WINDOW_FEATURES(g_object_new(WEBKIT_TYPE_WEB_WINDOW_FEATURES, NULL)); +} + +/** + * webkit_web_window_features_equal: + * @features1: a #WebKitWebWindowFeatures instance + * @features2: another #WebKitWebWindowFeatures instance + * + * Decides if a #WebKitWebWindowFeatures instance equals another, as + * in has the same values. + * + * Returns: %TRUE if the instances have the same values, %FALSE + * otherwise + * + * Since: 1.0.3 + */ +gboolean webkit_web_window_features_equal(WebKitWebWindowFeatures* features1, WebKitWebWindowFeatures* features2) +{ + if (features1 == features2) + return TRUE; + if (!features1 || !features2) + return FALSE; + + WebKitWebWindowFeaturesPrivate* priv1 = features1->priv; + WebKitWebWindowFeaturesPrivate* priv2 = features2->priv; + + if ((priv1->x == priv2->x) + && (priv1->y == priv2->y) + && (priv1->width == priv2->width) + && (priv1->height == priv2->height) + && (priv1->toolbar_visible == priv2->toolbar_visible) + && (priv1->statusbar_visible == priv2->statusbar_visible) + && (priv1->scrollbar_visible == priv2->scrollbar_visible) + && (priv1->menubar_visible == priv2->menubar_visible) + && (priv1->locationbar_visible == priv2->locationbar_visible) + && (priv1->fullscreen == priv2->fullscreen)) + return TRUE; + return FALSE; +} + +namespace WebKit { + +WebKitWebWindowFeatures* kitNew(const WebCore::WindowFeatures& features) +{ + WebKitWebWindowFeatures *webWindowFeatures = webkit_web_window_features_new(); + + if(features.xSet) + g_object_set(webWindowFeatures, "x", static_cast<int>(features.x), NULL); + + if(features.ySet) + g_object_set(webWindowFeatures, "y", static_cast<int>(features.y), NULL); + + if(features.widthSet) + g_object_set(webWindowFeatures, "width", static_cast<int>(features.width), NULL); + + if(features.heightSet) + g_object_set(webWindowFeatures, "height", static_cast<int>(features.height), NULL); + + g_object_set(webWindowFeatures, + "toolbar-visible", features.toolBarVisible, + "statusbar-visible", features.statusBarVisible, + "scrollbar-visible", features.scrollbarsVisible, + "menubar-visible", features.menuBarVisible, + "locationbar-visible", features.locationBarVisible, + "fullscreen", features.fullscreen, + NULL); + + return webWindowFeatures; +} + +} diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h new file mode 100644 index 0000000..a79119d --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebwindowfeatures_h +#define webkitwebwindowfeatures_h + +#include <glib-object.h> + +#include <webkit/webkitdefines.h> + +G_BEGIN_DECLS + +#define WEBKIT_TYPE_WEB_WINDOW_FEATURES (webkit_web_window_features_get_type()) +#define WEBKIT_WEB_WINDOW_FEATURES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeatures)) +#define WEBKIT_WEB_WINDOW_FEATURES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesClass)) +#define WEBKIT_IS_WEB_WINDOW_FEATURES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES)) +#define WEBKIT_IS_WEB_WINDOW_FEATURES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_WINDOW_FEATURES)) +#define WEBKIT_WEB_WINDOW_FEATURES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesClass)) + +typedef struct _WebKitWebWindowFeaturesPrivate WebKitWebWindowFeaturesPrivate; + +struct _WebKitWebWindowFeatures { + GObject parent_instance; + + /*< private >*/ + WebKitWebWindowFeaturesPrivate* priv; +}; + +struct _WebKitWebWindowFeaturesClass { + GObjectClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_webkit_reserved1) (void); + void (*_webkit_reserved2) (void); + void (*_webkit_reserved3) (void); + void (*_webkit_reserved4) (void); +}; + +WEBKIT_API GType +webkit_web_window_features_get_type (void); + +WEBKIT_API WebKitWebWindowFeatures* +webkit_web_window_features_new (void); + +WEBKIT_API gboolean +webkit_web_window_features_equal (WebKitWebWindowFeatures* features1, + WebKitWebWindowFeatures* features2); + +G_END_DECLS + +#endif /* webkitwebwindowfeatures_h */ diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h b/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h new file mode 100644 index 0000000..6ea919b --- /dev/null +++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitwebwindowfeaturesprivate_h +#define webkitwebwindowfeaturesprivate_h + +#include "webkitwebwindowfeatures.h" + +namespace WebKit { + +WebKitWebWindowFeatures* kitNew(const WebCore::WindowFeatures&); + +} + +#endif diff --git a/Source/WebKit/gtk/webkitmarshal.list b/Source/WebKit/gtk/webkitmarshal.list new file mode 100644 index 0000000..5372c57 --- /dev/null +++ b/Source/WebKit/gtk/webkitmarshal.list @@ -0,0 +1,25 @@ +BOOLEAN:ENUM,INT +BOOLEAN:INT,INT,STRING +BOOLEAN:OBJECT +BOOLEAN:OBJECT,OBJECT +BOOLEAN:OBJECT,OBJECT,ENUM +BOOLEAN:OBJECT,OBJECT,ENUM,BOOLEAN +BOOLEAN:OBJECT,OBJECT,OBJECT,OBJECT +BOOLEAN:OBJECT,OBJECT,STRING,OBJECT +BOOLEAN:OBJECT,STRING +BOOLEAN:OBJECT,STRING,POINTER +BOOLEAN:OBJECT,STRING,STRING,STRING +BOOLEAN:STRING,INT,STRING +BOOLEAN:STRING,OBJECT,ENUM +BOOLEAN:VOID +ENUM:OBJECT,OBJECT +OBJECT:OBJECT +OBJECT:STRING,STRING,POINTER +OBJECT:VOID +VOID:OBJECT,OBJECT +VOID:OBJECT,OBJECT,OBJECT,OBJECT +VOID:OBJECT,POINTER,POINTER +VOID:OBJECT,STRING +VOID:STRING +VOID:STRING,STRING + |