diff -Nru webkit2gtk-2.8.4+dfsg1/debian/changelog webkit2gtk-2.8.5+dfsg1/debian/changelog --- webkit2gtk-2.8.4+dfsg1/debian/changelog 2015-07-23 11:39:57.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/debian/changelog 2015-08-12 11:44:46.000000000 +0000 @@ -1,9 +1,15 @@ -webkit2gtk (2.8.4+dfsg1-1~14.04~webkitteam1) trusty; urgency=medium +webkit2gtk (2.8.5+dfsg1-1~14.04~webkitteam1) trusty; urgency=medium * Copied from debian * Pass -g1 for minimal debug information - -- Rico Tzschichholz Thu, 23 Jul 2015 13:39:30 +0200 + -- Rico Tzschichholz Wed, 12 Aug 2015 13:44:40 +0200 + +webkit2gtk (2.8.5+dfsg1-1) unstable; urgency=medium + + * New upstream release. + + -- Alberto Garcia Fri, 07 Aug 2015 11:25:09 +0300 webkit2gtk (2.8.4+dfsg1-1) unstable; urgency=medium diff -Nru webkit2gtk-2.8.4+dfsg1/Documentation/webkit2gtk-4.0/html/index.html webkit2gtk-2.8.5+dfsg1/Documentation/webkit2gtk-4.0/html/index.html --- webkit2gtk-2.8.4+dfsg1/Documentation/webkit2gtk-4.0/html/index.html 2015-07-08 09:16:24.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Documentation/webkit2gtk-4.0/html/index.html 2015-08-06 08:52:59.000000000 +0000 @@ -14,7 +14,7 @@
-

for WebKit2GTK+ 2.8.4

+

for WebKit2GTK+ 2.8.5


diff -Nru webkit2gtk-2.8.4+dfsg1/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html webkit2gtk-2.8.5+dfsg1/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html --- webkit2gtk-2.8.4+dfsg1/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2015-07-08 09:16:14.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2015-08-06 08:52:49.000000000 +0000 @@ -127,7 +127,7 @@

WEBKIT_MICRO_VERSION

-
#define WEBKIT_MICRO_VERSION (4)
+
#define WEBKIT_MICRO_VERSION (5)
 

Like webkit_get_micro_version(), but from the headers used at application compile time, rather than from the library linked diff -Nru webkit2gtk-2.8.4+dfsg1/Documentation/webkitdomgtk-4.0/html/index.html webkit2gtk-2.8.5+dfsg1/Documentation/webkitdomgtk-4.0/html/index.html --- webkit2gtk-2.8.4+dfsg1/Documentation/webkitdomgtk-4.0/html/index.html 2015-07-08 09:15:57.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Documentation/webkitdomgtk-4.0/html/index.html 2015-08-06 08:52:32.000000000 +0000 @@ -14,7 +14,7 @@

-

for WebKitDOMGTK+ 2.8.4

+

for WebKitDOMGTK+ 2.8.5


diff -Nru webkit2gtk-2.8.4+dfsg1/NEWS webkit2gtk-2.8.5+dfsg1/NEWS --- webkit2gtk-2.8.4+dfsg1/NEWS 2015-07-08 09:26:58.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/NEWS 2015-08-06 08:58:55.000000000 +0000 @@ -1,4 +1,21 @@ ================= +WebKitGTK+ 2.8.5 +================= + +What's new in WebKitGTK+ 2.8.5? + + - Fix the window size reported when the web view isn't realized yet. This fixes the layout of + some websites when opening new tabs in the browser and anchor links when opened in new tabs too. + - Prevent clipboard contents from being lost when web process finishes. + - Always allow font matching for strong aliases. + - Move GStreamer missing plugins installer to the UI process. + - Fix a crash when spell checker returns no guesses. + - Fix a crash when SoupSession is destroyed in exit handler. + - Fix a crash closing a page when default context menu is open. + - Several crashes and rendering issues fixed. + - Translation updates: Swedish. + +================= WebKitGTK+ 2.8.4 ================= diff -Nru webkit2gtk-2.8.4+dfsg1/Source/bmalloc/bmalloc/SegregatedFreeList.h webkit2gtk-2.8.5+dfsg1/Source/bmalloc/bmalloc/SegregatedFreeList.h --- webkit2gtk-2.8.4+dfsg1/Source/bmalloc/bmalloc/SegregatedFreeList.h 2015-07-07 11:10:23.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/bmalloc/bmalloc/SegregatedFreeList.h 2015-08-04 13:35:13.000000000 +0000 @@ -60,7 +60,7 @@ FreeList& select(size_t); Owner m_owner; - std::array m_freeLists; + std::array m_freeLists; }; } // namespace bmalloc diff -Nru webkit2gtk-2.8.4+dfsg1/Source/bmalloc/bmalloc/Sizes.h webkit2gtk-2.8.5+dfsg1/Source/bmalloc/bmalloc/Sizes.h --- webkit2gtk-2.8.4+dfsg1/Source/bmalloc/bmalloc/Sizes.h 2015-07-07 11:10:23.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/bmalloc/bmalloc/Sizes.h 2015-08-04 13:35:13.000000000 +0000 @@ -53,7 +53,7 @@ #endif static const size_t vmPageMask = ~(vmPageSize - 1); - static const size_t superChunkSize = 8 * MB; + static const size_t superChunkSize = 4 * MB; static const size_t smallMax = 256; static const size_t smallLineSize = 256; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/cmake/FindCairoGL.cmake webkit2gtk-2.8.5+dfsg1/Source/cmake/FindCairoGL.cmake --- webkit2gtk-2.8.4+dfsg1/Source/cmake/FindCairoGL.cmake 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/cmake/FindCairoGL.cmake 2015-08-05 10:28:19.000000000 +0000 @@ -1,9 +1,9 @@ # - Try to find CairoGL # Once done, this will define # -# CAIRO_GL_FOUND - system has CairoGL -# CAIRO_GL_INCLUDE_DIRS - the CairoGL include directories -# CAIRO_GL_LIBRARIES - link these to use CairoGL +# CAIROGL_FOUND - system has CairoGL +# CAIROGL_INCLUDE_DIRS - the CairoGL include directories +# CAIROGL_LIBRARIES - link these to use CairoGL # # Copyright (C) 2014 Igalia S.L. # @@ -29,18 +29,22 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. find_package(PkgConfig) -pkg_check_modules(CAIRO_GL cairo-gl) +pkg_check_modules(CAIROGL cairo-gl) # At the moment CairoGL does not add any extra cflags and libraries, so we can -# safely ignore CAIRO_GL_LIBRARIES and CAIRO_GL_INCLUDE_DIRS for the moment. +# safely ignore CAIROGL_LIBRARIES and CAIROGL_INCLUDE_DIRS for the moment. foreach (_component ${CairoGL_FIND_COMPONENTS}) string(TOUPPER ${_component} _UPPER_NAME) string(REGEX REPLACE "-" "_" _UPPER_NAME ${_UPPER_NAME}) pkg_check_modules(${_UPPER_NAME} ${_component}) - set(CAIRO_GL_INCLUDE_DIRS ${CAIRO_GL_INCLUDE_DIRS} ${_UPPER_NAME}_INCLUDE_DIRS) - set(CAIRO_GL_LIBRARIES ${CAIRO_GL_LIBRARIES} ${_UPPER_NAME}_LIBRARIES) + if (${_UPPER_NAME}_INCLUDE_DIRS) + set(CAIROGL_INCLUDE_DIRS ${CAIROGL_INCLUDE_DIRS} ${_UPPER_NAME}_INCLUDE_DIRS) + endif () + if (${_UPPER_NAME}_LIBRARIES) + set(CAIROGL_LIBRARIES ${CAIROGL_LIBRARIES} ${_UPPER_NAME}_LIBRARIES) + endif () endforeach () include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(CairoGL DEFAULT_MSG CAIRO_GL_INCLUDE_DIRS CAIRO_GL_LIBRARIES) +find_package_handle_standard_args(CairoGL DEFAULT_MSG CAIROGL_INCLUDE_DIRS CAIROGL_LIBRARIES) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/cmake/OptionsCommon.cmake webkit2gtk-2.8.5+dfsg1/Source/cmake/OptionsCommon.cmake --- webkit2gtk-2.8.4+dfsg1/Source/cmake/OptionsCommon.cmake 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/cmake/OptionsCommon.cmake 2015-08-06 08:21:28.000000000 +0000 @@ -15,7 +15,8 @@ set(CODE_GENERATOR_PREPROCESSOR_WITH_LINEMARKERS "${CMAKE_CXX_COMPILER} -E -x c++") endif () -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") +execute_process(COMMAND ${CMAKE_AR} -V OUTPUT_VARIABLE AR_VERSION) +if ("${AR_VERSION}" MATCHES "^GNU ar") set(CMAKE_CXX_ARCHIVE_CREATE " cruT ") set(CMAKE_C_ARCHIVE_CREATE " cruT ") set(CMAKE_CXX_ARCHIVE_APPEND " ruT ") diff -Nru webkit2gtk-2.8.4+dfsg1/Source/cmake/OptionsGTK.cmake webkit2gtk-2.8.5+dfsg1/Source/cmake/OptionsGTK.cmake --- webkit2gtk-2.8.4+dfsg1/Source/cmake/OptionsGTK.cmake 2015-07-08 09:12:44.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/cmake/OptionsGTK.cmake 2015-08-06 08:51:17.000000000 +0000 @@ -2,14 +2,14 @@ set(PROJECT_VERSION_MAJOR 2) set(PROJECT_VERSION_MINOR 8) -set(PROJECT_VERSION_MICRO 4) +set(PROJECT_VERSION_MICRO 5) set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_MICRO}) set(WEBKITGTK_API_VERSION 4.0) # Libtool library version, not to be confused with API version. # See http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html -CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT2 43 7 6) -CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 19 11 1) +CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT2 43 8 6) +CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 19 12 1) set(ENABLE_CREDENTIAL_STORAGE ON CACHE BOOL "Whether or not to enable support for credential storage using libsecret.") set(ENABLE_GTKDOC OFF CACHE BOOL "Whether or not to use generate gtkdoc.") @@ -96,13 +96,13 @@ if (OPENGL_FOUND) if (GLX_FOUND) - list(APPEND CAIRO_GL_COMPONENTS cairo-glx) + list(APPEND CAIROGL_COMPONENTS cairo-glx) endif () if (EGL_FOUND) - list(APPEND CAIRO_GL_COMPONENTS cairo-egl) + list(APPEND CAIROGL_COMPONENTS cairo-egl) endif () - find_package(CairoGL 1.10.2 COMPONENTS ${CAIRO_GL_COMPONENTS}) - if (CAIRO_GL_FOUND) + find_package(CairoGL 1.10.2 COMPONENTS ${CAIROGL_COMPONENTS}) + if (CAIROGL_FOUND) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCELERATED_2D_CANVAS ON) else () WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCELERATED_2D_CANVAS OFF) @@ -117,7 +117,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_REDIRECTED_XCOMPOSITE_WINDOW OFF) endif () -if (ENABLE_ACCELERATED_2D_CANVAS AND NOT(CAIRO_GL_FOUND)) +if (ENABLE_ACCELERATED_2D_CANVAS AND NOT(CAIROGL_FOUND)) message(FATAL_ERROR "cairo-gl is needed for Accelerated 2D Canvas support") endif () diff -Nru webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp --- webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp 2015-05-20 15:25:35.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp 2015-08-05 09:46:11.000000000 +0000 @@ -84,9 +84,7 @@ BasicBlock* block = m_graph.block(blockIndex); if (!block) return; - - // FIXME: It's likely that this can be improved, for static analyses that use - // HashSets. https://bugs.webkit.org/show_bug.cgi?id=118455 + m_live = block->ssa->liveAtTail; for (unsigned nodeIndex = block->size(); nodeIndex--;) { @@ -134,9 +132,9 @@ return; m_changed = true; - block->ssa->liveAtHead = m_live; for (unsigned i = block->predecessors.size(); i--;) block->predecessors[i]->ssa->liveAtTail.add(m_live.begin(), m_live.end()); + block->ssa->liveAtHead = WTF::move(m_live); } void addChildUse(Node*, Edge& edge) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp --- webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp 2015-07-06 13:01:05.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp 2015-08-06 08:21:27.000000000 +0000 @@ -469,14 +469,6 @@ #endif #endif - // This stack check is done in the prologue for a function call, and the - // CallFrame is not completely set up yet. For example, if the frame needs - // a lexical environment object, the lexical environment object will only be - // set up after we start executing the function. If we need to throw a - // StackOverflowError here, then we need to tell the prologue to start the - // stack unwinding from the caller frame (which is fully set up) instead. - // To do that, we return the caller's CallFrame in the second return value. - // // If the stack check succeeds and we don't need to throw the error, then // we'll return 0 instead. The prologue will check for a non-zero value // when determining whether to set the callFrame or not. @@ -490,7 +482,6 @@ LLINT_RETURN_TWO(pc, 0); #endif - exec = exec->callerFrame(vm.topVMEntryFrame); vm.topCallFrame = exec; ErrorHandlingScope errorScope(vm); CommonSlowPaths::interpreterThrowInCaller(exec, createStackOverflowError(exec)); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/runtime/DatePrototype.cpp webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/runtime/DatePrototype.cpp --- webkit2gtk-2.8.4+dfsg1/Source/JavaScriptCore/runtime/DatePrototype.cpp 2015-05-20 15:25:35.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/JavaScriptCore/runtime/DatePrototype.cpp 2015-08-04 12:33:58.000000000 +0000 @@ -1072,7 +1072,13 @@ JSObject* object = jsCast(thisValue.toThis(exec, NotStrictMode)); if (exec->hadException()) return JSValue::encode(jsNull()); - + + JSValue timeValue = object->toPrimitive(exec, PreferNumber); + if (exec->hadException()) + return JSValue::encode(jsNull()); + if (timeValue.isNumber() && !(timeValue.isInt32() || std::isfinite(timeValue.asDouble()))) + return JSValue::encode(jsNull()); + JSValue toISOValue = object->get(exec, exec->vm().propertyNames->toISOString); if (exec->hadException()) return JSValue::encode(jsNull()); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/bindings/js/JSDOMWindowBase.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/bindings/js/JSDOMWindowBase.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/bindings/js/JSDOMWindowBase.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/bindings/js/JSDOMWindowBase.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -248,11 +248,15 @@ { if (!value.isObject()) return 0; - const ClassInfo* classInfo = asObject(value)->classInfo(); - if (classInfo == JSDOMWindow::info()) - return jsCast(asObject(value)); - if (classInfo == JSDOMWindowShell::info()) - return jsCast(asObject(value))->window(); + while (!value.isNull()) { + JSObject* object = asObject(value); + const ClassInfo* classInfo = object->classInfo(); + if (classInfo == JSDOMWindow::info()) + return jsCast(object); + if (classInfo == JSDOMWindowShell::info()) + return jsCast(object)->window(); + value = object->prototype(); + } return 0; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/css/StyleResolver.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/css/StyleResolver.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/css/StyleResolver.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/css/StyleResolver.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -1053,10 +1053,10 @@ { m_state.setStyle(RenderStyle::create()); // Make sure our fonts are initialized if we don't inherit them from our parent style. - if (Settings* settings = documentSettings()) { - initializeFontStyle(settings); + initializeFontStyle(documentSettings()); + if (documentSettings()) m_state.style()->fontCascade().update(&document().fontSelector()); - } else + else m_state.style()->fontCascade().update(nullptr); return m_state.takeStyle(); @@ -2111,7 +2111,8 @@ void StyleResolver::initializeFontStyle(Settings* settings) { FontDescription fontDescription; - fontDescription.setRenderingMode(settings->fontRenderingMode()); + if (settings) + fontDescription.setRenderingMode(settings->fontRenderingMode()); fontDescription.setOneFamily(standardFamily); fontDescription.setKeywordSizeFromIdentifier(CSSValueMedium); setFontSize(fontDescription, Style::fontSizeForKeyword(CSSValueMedium, false, document())); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/css/StyleSheetContents.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/css/StyleSheetContents.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/css/StyleSheetContents.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/css/StyleSheetContents.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -233,7 +233,11 @@ if (is(*rule)) return false; childVectorIndex -= m_importRules.size(); - + + // If the number of selectors would overflow RuleData, we drop the operation. + if (is(*rule) && downcast(*rule).selectorList().componentCount() > RuleData::maximumSelectorComponentCount) + return false; + m_childRules.insert(childVectorIndex, rule); return true; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/editing/FrameSelection.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/editing/FrameSelection.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/editing/FrameSelection.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/editing/FrameSelection.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -1998,10 +1998,14 @@ if (!root) return; + RefPtr range = toNormalizedRange(); + if (!range) + return; + FloatRect visibleContentRect = m_frame->view()->visibleContentRect(ScrollableArea::LegacyIOSDocumentVisibleRect); Vector quads; - toNormalizedRange()->textQuads(quads, true); + range->textQuads(quads, true); size_t size = quads.size(); for (size_t i = 0; i < size; ++i) { diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/HTMLMediaElement.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/HTMLMediaElement.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/HTMLMediaElement.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/HTMLMediaElement.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -5821,6 +5821,16 @@ return potentiallyPlaying() ? requestedPlaybackRate() : 0; } +#if USE(GSTREAMER) +void HTMLMediaElement::requestInstallMissingPlugins(const String& details, MediaPlayerRequestInstallMissingPluginsCallback& callback) +{ + if (!document().page()) + return; + + document().page()->chrome().client().requestInstallMissingMediaPlugins(details, callback); +} +#endif + void HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture() { m_mediaSession->removeBehaviorRestriction(HTMLMediaSession::RequireUserGestureForLoad); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/HTMLMediaElement.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/HTMLMediaElement.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/HTMLMediaElement.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/HTMLMediaElement.h 2015-08-06 08:21:28.000000000 +0000 @@ -616,6 +616,11 @@ virtual double mediaPlayerRequestedPlaybackRate() const override final; void loadTimerFired(); + +#if USE(GSTREAMER) + virtual void requestInstallMissingPlugins(const String&, MediaPlayerRequestInstallMissingPluginsCallback&) override final; +#endif + void progressEventTimerFired(); void playbackProgressTimerFired(); void scanTimerFired(); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/shadow/SliderThumbElement.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/shadow/SliderThumbElement.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/html/shadow/SliderThumbElement.cpp 2015-07-07 10:21:12.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/html/shadow/SliderThumbElement.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -190,6 +190,7 @@ else thumbLocation.setX(thumbLocation.x() - offset); thumb->setLocation(thumbLocation); + thumb->repaint(); } // -------------------------------- diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/cache/CachedResource.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/cache/CachedResource.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/cache/CachedResource.cpp 2015-07-06 11:27:34.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/cache/CachedResource.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -405,6 +405,7 @@ void CachedResource::clearLoader() { ASSERT(m_loader); + m_identifierForLoadWithoutResourceLoader = m_loader->identifier(); m_loader = nullptr; deleteIfPossible(); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/cache/CachedResource.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/cache/CachedResource.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/cache/CachedResource.h 2015-07-06 07:21:21.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/cache/CachedResource.h 2015-08-06 08:21:28.000000000 +0000 @@ -257,6 +257,8 @@ virtual char* getOrCreateReadBuffer(size_t /* requestedSize */, size_t& /* actualSize */) { return nullptr; } #endif + unsigned long identifierForLoadWithoutResourceLoader() const { return m_identifierForLoadWithoutResourceLoader; } + protected: void setEncodedSize(unsigned); void setDecodedSize(unsigned); @@ -338,6 +340,8 @@ HashSet m_handlesToRevalidate; RedirectChainCacheStatus m_redirectChainCacheStatus; + + unsigned long m_identifierForLoadWithoutResourceLoader { 0 }; }; class CachedResource::Callback { diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/DocumentLoader.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/DocumentLoader.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/DocumentLoader.cpp 2015-07-07 10:12:52.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/DocumentLoader.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -553,8 +553,11 @@ // We checked application cache for initial URL, now we need to check it for redirected one. ASSERT(!m_substituteData.isValid()); m_applicationCacheHost->maybeLoadMainResourceForRedirect(newRequest, m_substituteData); - if (m_substituteData.isValid()) - m_identifierForLoadWithoutResourceLoader = mainResourceLoader()->identifier(); + if (m_substituteData.isValid()) { + RELEASE_ASSERT(m_mainResource); + ResourceLoader* loader = m_mainResource->loader(); + m_identifierForLoadWithoutResourceLoader = loader ? loader->identifier() : m_mainResource->identifierForLoadWithoutResourceLoader(); + } } // FIXME: Ideally we'd stop the I/O until we hear back from the navigation policy delegate @@ -584,10 +587,15 @@ // However, from an API perspective, this isn't a cancellation. Therefore, sever our relationship with the network load, // but prevent the ResourceLoader from sending ResourceLoadNotifier callbacks. RefPtr resourceLoader = mainResourceLoader(); - ASSERT(resourceLoader->shouldSendResourceLoadCallbacks()); - resourceLoader->setSendCallbackPolicy(DoNotSendCallbacks); + if (resourceLoader) { + ASSERT(resourceLoader->shouldSendResourceLoadCallbacks()); + resourceLoader->setSendCallbackPolicy(DoNotSendCallbacks); + } + clearMainResource(); - resourceLoader->setSendCallbackPolicy(SendCallbacks); + + if (resourceLoader) + resourceLoader->setSendCallbackPolicy(SendCallbacks); handleSubstituteDataLoadSoon(); } } @@ -648,6 +656,7 @@ } ASSERT(!m_waitingForContentPolicy); + ASSERT(frameLoader()); m_waitingForContentPolicy = true; // Always show content with valid substitute data. @@ -922,13 +931,14 @@ m_frame->document()->domWindow()->finishedLoading(); } -void DocumentLoader::setFrame(Frame* frame) +void DocumentLoader::attachToFrame(Frame& frame) { - if (m_frame == frame) + if (m_frame == &frame) return; - ASSERT(frame && !m_frame); - m_frame = frame; - m_writer.setFrame(frame); + + ASSERT(!m_frame); + m_frame = &frame; + m_writer.setFrame(&frame); attachToFrame(); } @@ -950,10 +960,17 @@ m_mainResource->removeClient(this); m_applicationCacheHost->setDOMApplicationCache(nullptr); - InspectorInstrumentation::loaderDetachedFromFrame(*m_frame, *this); + + cancelPolicyCheckIfNeeded(); + + // Even though we ASSERT at the top of this method that we have an m_frame, we're seeing crashes where m_frame is null. + // This means either that a DocumentLoader is detaching twice, or is detaching before ever having attached. + // Until we figure out how that is happening, null check m_frame before dereferencing it here. + // and https://bugs.webkit.org/show_bug.cgi?id=146786 + if (m_frame) + InspectorInstrumentation::loaderDetachedFromFrame(*m_frame, *this); + m_frame = nullptr; - // The call to stopLoading() above should have canceled any pending content policy check. - ASSERT_WITH_MESSAGE(!m_waitingForContentPolicy, "The content policy callback needs a valid frame."); } void DocumentLoader::clearMainResourceLoader() @@ -1470,17 +1487,24 @@ setRequest(request); } -void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError) +void DocumentLoader::cancelPolicyCheckIfNeeded() { - Ref protect(*this); - ResourceError error = resourceError.isNull() ? frameLoader()->cancelledError(m_request) : resourceError; + RELEASE_ASSERT(frameLoader()); - m_dataLoadTimer.stop(); if (m_waitingForContentPolicy) { frameLoader()->policyChecker().cancelCheck(); - ASSERT(m_waitingForContentPolicy); m_waitingForContentPolicy = false; } +} + +void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError) +{ + Ref protect(*this); + ResourceError error = resourceError.isNull() ? frameLoader()->cancelledError(m_request) : resourceError; + + m_dataLoadTimer.stop(); + + cancelPolicyCheckIfNeeded(); if (mainResourceLoader()) mainResourceLoader()->cancel(error); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/DocumentLoader.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/DocumentLoader.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/DocumentLoader.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/DocumentLoader.h 2015-08-06 08:21:28.000000000 +0000 @@ -84,10 +84,9 @@ } WEBCORE_EXPORT virtual ~DocumentLoader(); - WEBCORE_EXPORT void setFrame(Frame*); + void attachToFrame(Frame&); Frame* frame() const { return m_frame; } - WEBCORE_EXPORT virtual void attachToFrame(); WEBCORE_EXPORT virtual void detachFromFrame(); WEBCORE_EXPORT FrameLoader* frameLoader() const; @@ -270,6 +269,8 @@ protected: WEBCORE_EXPORT DocumentLoader(const ResourceRequest&, const SubstituteData&); + WEBCORE_EXPORT virtual void attachToFrame(); + bool m_deferMainResourceDataLoad; private: @@ -324,6 +325,8 @@ void clearMainResource(); + void cancelPolicyCheckIfNeeded(); + Frame* m_frame; Ref m_cachedResourceLoader; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/FrameLoader.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/FrameLoader.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/FrameLoader.cpp 2015-07-07 07:25:16.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/FrameLoader.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -274,7 +274,7 @@ // FrameLoader::checkCompleted() will overwrite the URL of the document to be activeDocumentLoader()->documentURL(). RefPtr loader = m_client.createDocumentLoader(ResourceRequest(URL(ParsedURLString, emptyString())), SubstituteData()); - loader->setFrame(&m_frame); + loader->attachToFrame(m_frame); loader->setResponse(ResourceResponse(URL(), ASCIILiteral("text/html"), 0, String())); loader->setCommitted(true); setDocumentLoader(loader.get()); @@ -1685,7 +1685,7 @@ return; if (loader) - loader->setFrame(&m_frame); + loader->attachToFrame(m_frame); if (m_policyDocumentLoader && m_policyDocumentLoader != m_provisionalDocumentLoader && m_policyDocumentLoader != m_documentLoader) @@ -1925,7 +1925,7 @@ if (cachedPage) { DocumentLoader* cachedDocumentLoader = cachedPage->documentLoader(); ASSERT(cachedDocumentLoader); - cachedDocumentLoader->setFrame(&m_frame); + cachedDocumentLoader->attachToFrame(m_frame); m_client.transitionToCommittedFromCachedFrame(cachedPage->cachedMainFrame()); } else m_client.transitionToCommittedForNewPage(); @@ -3134,7 +3134,7 @@ if (FrameView* view = m_frame.view()) view->setWasScrolledByUser(false); - history().setCurrentItem(item); + history().setCurrentItem(&item); // loadInSameDocument() actually changes the URL and notifies load delegates of a "fake" load loadInSameDocument(item.url(), item.stateObject(), false); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/HistoryController.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/HistoryController.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/HistoryController.cpp 2015-07-07 12:16:13.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/HistoryController.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -342,6 +342,9 @@ if (m_frame.loader().loadType() == FrameLoadType::Reload || m_frame.loader().loadType() == FrameLoadType::ReloadFromOrigin) saveScrollPositionAndViewStateToItem(m_currentItem.get()); + + // Rebuild the history item tree when reloading as trying to re-associate everything is too error-prone. + m_currentItem->clearChildren(); } // When reloading the page, we may end up redirecting to a different URL @@ -470,8 +473,13 @@ // the provisional item for restoring state. // Note previousItem must be set before we close the URL, which will // happen when the data source is made non-provisional below + + // FIXME: https://bugs.webkit.org/show_bug.cgi?id=146842 + // We should always have a provisional item when committing, but we sometimes don't. + // Not having one leads to us not having a m_currentItem later, which is also a terrible known issue. + // We should get to the bottom of this. ASSERT(m_provisionalItem); - setCurrentItem(*m_provisionalItem); + setCurrentItem(m_provisionalItem.get()); m_provisionalItem = nullptr; // Tell all other frames in the tree to commit their provisional items and @@ -512,7 +520,7 @@ view->setWasScrolledByUser(false); // Now commit the provisional item - setCurrentItem(*m_provisionalItem); + setCurrentItem(m_provisionalItem.get()); m_provisionalItem = nullptr; // Restore form state (works from currentItem) @@ -561,7 +569,7 @@ return; // Commit the provisional item. - setCurrentItem(*m_provisionalItem); + setCurrentItem(m_provisionalItem.get()); m_provisionalItem = nullptr; // Iterate over the rest of the tree. @@ -577,11 +585,11 @@ m_frameLoadComplete = true; } -void HistoryController::setCurrentItem(HistoryItem& item) +void HistoryController::setCurrentItem(HistoryItem* item) { m_frameLoadComplete = false; m_previousItem = m_currentItem; - m_currentItem = &item; + m_currentItem = item; } void HistoryController::setCurrentItemTitle(const StringWithDirection& title) @@ -664,7 +672,7 @@ initializeItem(item); // Set the item for which we will save document state - setCurrentItem(item); + setCurrentItem(item.ptr()); return item; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/HistoryController.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/HistoryController.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/HistoryController.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/HistoryController.h 2015-08-06 08:21:28.000000000 +0000 @@ -74,7 +74,7 @@ void updateForFrameLoadCompleted(); HistoryItem* currentItem() const { return m_currentItem.get(); } - void setCurrentItem(HistoryItem&); + void setCurrentItem(HistoryItem*); void setCurrentItemTitle(const StringWithDirection&); bool currentItemShouldBeReplaced() const; WEBCORE_EXPORT void replaceCurrentItem(HistoryItem*); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/PingLoader.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/PingLoader.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/PingLoader.cpp 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/PingLoader.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -99,6 +99,7 @@ request.setHTTPMethod("POST"); request.setHTTPContentType("application/json"); request.setHTTPBody(report); + request.setAllowCookies(frame.document()->securityOrigin()->isSameSchemeHostPort(SecurityOrigin::create(reportURL).ptr())); frame.loader().addExtraFieldsToSubresourceRequest(request); String referrer = SecurityPolicy::generateReferrerHeader(frame.document()->referrerPolicy(), reportURL, frame.loader().outgoingReferrer()); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/SubframeLoader.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/SubframeLoader.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/SubframeLoader.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/SubframeLoader.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -386,10 +386,12 @@ bool SubframeLoader::loadPlugin(HTMLPlugInImageElement& pluginElement, const URL& url, const String& mimeType, const Vector& paramNames, const Vector& paramValues, bool useFallback) { - RenderEmbeddedObject* renderer = pluginElement.renderEmbeddedObject(); + if (useFallback) + return false; + RenderEmbeddedObject* renderer = pluginElement.renderEmbeddedObject(); // FIXME: This code should not depend on renderer! - if (!renderer || useFallback) + if (!renderer) return false; pluginElement.subframeLoaderWillCreatePlugIn(url); @@ -403,7 +405,11 @@ loadManually = false; #endif + WeakPtr weakRenderer = renderer->createWeakPtr(); + // createPlugin *may* cause this renderer to disappear from underneath. RefPtr widget = m_frame.loader().client().createPlugin(contentSize, &pluginElement, url, paramNames, paramValues, mimeType, loadManually); + if (!weakRenderer) + return false; if (!widget) { if (!renderer->isPluginUnavailable()) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/ThreadableLoader.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/ThreadableLoader.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/ThreadableLoader.cpp 2015-07-06 08:59:31.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/ThreadableLoader.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -51,17 +51,28 @@ { } +ThreadableLoaderOptions::ThreadableLoaderOptions(const ResourceLoaderOptions& baseOptions, PreflightPolicy preflightPolicy, CrossOriginRequestPolicy crossOriginRequestPolicy, RefPtr&& securityOrigin, String&& initiator) + : ResourceLoaderOptions(baseOptions) + , preflightPolicy(preflightPolicy) + , crossOriginRequestPolicy(crossOriginRequestPolicy) + , securityOrigin(WTF::move(securityOrigin)) +#if ENABLE(RESOURCE_TIMING) + , initiator(WTF::move(initiator)) +#endif +{ +} + std::unique_ptr ThreadableLoaderOptions::isolatedCopy() const { - std::unique_ptr copy = std::make_unique(); - copy->preflightPolicy = preflightPolicy; - copy->crossOriginRequestPolicy = crossOriginRequestPolicy; + RefPtr securityOriginCopy; if (securityOrigin) - copy->securityOrigin = securityOrigin->isolatedCopy(); + securityOriginCopy = securityOrigin->isolatedCopy(); #if ENABLE(RESOURCE_TIMING) - copy->initiator = initiator.isolatedCopy(); + return std::make_unique(*this, preflightPolicy, crossOriginRequestPolicy, + WTF::move(securityOriginCopy), initiator.isolatedCopy()); +#else + return std::make_unique(*this, preflightPolicy, crossOriginRequestPolicy, WTF::move(securityOriginCopy), String()); #endif - return copy; } PassRefPtr ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/ThreadableLoader.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/ThreadableLoader.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/loader/ThreadableLoader.h 2015-07-06 09:00:05.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/loader/ThreadableLoader.h 2015-08-06 09:36:39.000000000 +0000 @@ -36,10 +36,7 @@ #include #include #include - -#if ENABLE(RESOURCE_TIMING) -#include -#endif +#include namespace WebCore { @@ -62,8 +59,9 @@ PreventPreflight }; - struct ThreadableLoaderOptions : public ResourceLoaderOptions { + struct ThreadableLoaderOptions : ResourceLoaderOptions { ThreadableLoaderOptions(); + ThreadableLoaderOptions(const ResourceLoaderOptions&, PreflightPolicy, CrossOriginRequestPolicy, RefPtr&&, String&& initiator); ~ThreadableLoaderOptions(); std::unique_ptr isolatedCopy() const; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/mathml/MathMLSelectElement.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/mathml/MathMLSelectElement.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/mathml/MathMLSelectElement.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/mathml/MathMLSelectElement.h 2015-08-06 08:21:43.000000000 +0000 @@ -56,7 +56,7 @@ Element* getSelectedSemanticsChild(); void updateSelectedChild() override; - Element* m_selectedChild; + RefPtr m_selectedChild; }; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/Modules/webaudio/AudioContext.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/Modules/webaudio/AudioContext.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/Modules/webaudio/AudioContext.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/Modules/webaudio/AudioContext.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -984,7 +984,13 @@ void AudioContext::isPlayingAudioDidChange() { - document()->updateIsPlayingAudio(); + // Make sure to call Document::updateIsPlayingAudio() on the main thread, since + // we could be on the audio I/O thread here and the call into WebCore could block. + RefPtr strongThis(this); + callOnMainThread([strongThis] { + if (strongThis->document()) + strongThis->document()->updateIsPlayingAudio(); + }); } void AudioContext::fireCompletionEvent() diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationBase.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationBase.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationBase.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationBase.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -569,23 +569,25 @@ if (preActive()) return 0; + if (postActive() || !m_animation->duration()) + return 1.0; + double elapsedTime = getElapsedTime(); double dur = m_animation->duration(); if (m_animation->iterationCount() > 0) dur *= m_animation->iterationCount(); - if (postActive() || !m_animation->duration()) - return 1.0; + if (fillingForwards()) + elapsedTime = dur; + + double fractionalTime = this->fractionalTime(scale, elapsedTime, offset); if (m_animation->iterationCount() > 0 && elapsedTime >= dur) { - const int integralIterationCount = static_cast(m_animation->iterationCount()); - const bool iterationCountHasFractional = m_animation->iterationCount() - integralIterationCount; - return (integralIterationCount % 2 || iterationCountHasFractional) ? 1.0 : 0.0; + if (WTF::isIntegral(fractionalTime)) + return fractionalTime; } - const double fractionalTime = this->fractionalTime(scale, elapsedTime, offset); - if (!tf) tf = m_animation->timingFunction().get(); @@ -675,7 +677,7 @@ return m_pauseTime - m_startTime; if (m_startTime <= 0) return 0; - if (postActive()) + if (postActive() || fillingForwards()) return 1; return beginAnimationUpdateTime() - m_startTime; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationBase.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationBase.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationBase.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationBase.h 2015-08-06 08:21:28.000000000 +0000 @@ -129,6 +129,8 @@ bool waitingForStartTime() const { return m_animationState == AnimationState::StartWaitResponse; } bool waitingForStyleAvailable() const { return m_animationState == AnimationState::StartWaitStyleAvailable; } + bool isAccelerated() const { return m_isAccelerated; } + virtual double timeToNextService(); double progress(double scale, double offset, const TimingFunction*) const; @@ -228,8 +230,6 @@ void goIntoEndingOrLoopingState(); - bool isAccelerated() const { return m_isAccelerated; } - static void setNeedsStyleRecalc(Element*); void getTimeToNextEvent(double& time, bool& isLooping) const; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationController.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationController.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/AnimationController.cpp 2015-07-06 13:34:34.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/AnimationController.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -72,8 +72,6 @@ , m_updateStyleIfNeededDispatcher(*this, &AnimationControllerPrivate::updateStyleIfNeededDispatcherFired) , m_frame(frame) , m_beginAnimationUpdateTime(cBeginAnimationUpdateTimeNotSet) - , m_animationsWaitingForStyle() - , m_animationsWaitingForStartTimeResponse() , m_beginAnimationUpdateCount(0) , m_waitingForAsyncStartNotification(false) , m_isSuspended(false) @@ -97,6 +95,8 @@ bool AnimationControllerPrivate::clear(RenderElement& renderer) { + LOG(Animations, "AnimationControllerPrivate %p clear: %p", this, &renderer); + ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); @@ -410,6 +410,8 @@ void AnimationControllerPrivate::receivedStartTimeResponse(double time) { + LOG(Animations, "AnimationControllerPrivate %p receivedStartTimeResponse %f", this, time); + m_waitingForAsyncStartNotification = false; startTimeResponse(time); } @@ -509,8 +511,21 @@ void AnimationControllerPrivate::animationWillBeRemoved(AnimationBase* animation) { + LOG(Animations, "AnimationControllerPrivate %p animationWillBeRemoved: %p", this, animation); + removeFromAnimationsWaitingForStyle(animation); removeFromAnimationsWaitingForStartTimeResponse(animation); + + bool anyAnimationsWaitingForAsyncStart = false; + for (auto& animation : m_animationsWaitingForStartTimeResponse) { + if (animation->waitingForStartTime() && animation->isAccelerated()) { + anyAnimationsWaitingForAsyncStart = true; + break; + } + } + + if (!anyAnimationsWaitingForAsyncStart) + m_waitingForAsyncStartNotification = false; } AnimationController::AnimationController(Frame& frame) @@ -588,8 +603,11 @@ return m_data->getAnimatedStyleForRenderer(renderer); } -void AnimationController::notifyAnimationStarted(RenderElement&, double startTime) +void AnimationController::notifyAnimationStarted(RenderElement& renderer, double startTime) { + LOG(Animations, "AnimationController %p notifyAnimationStarted on renderer %p, time=%f", this, &renderer, startTime); + UNUSED_PARAM(renderer); + AnimationUpdateBlock animationUpdateBlock(this); m_data->receivedStartTimeResponse(startTime); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/CompositeAnimation.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/CompositeAnimation.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/CompositeAnimation.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/CompositeAnimation.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -173,7 +173,7 @@ if (!equal && isActiveTransition) { // Add the new transition RefPtr implicitAnimation = ImplicitAnimation::create(animation, prop, renderer, this, modifiedCurrentStyle ? modifiedCurrentStyle.get() : fromStyle); - LOG(Animations, "Created ImplicitAnimation %p for property %s duration %.2f delay %.2f", implicitAnimation.get(), getPropertyName(prop), animation.duration(), animation.delay()); + LOG(Animations, "Created ImplicitAnimation %p on renderer %p for property %s duration %.2f delay %.2f", implicitAnimation.get(), renderer, getPropertyName(prop), animation.duration(), animation.delay()); m_transitions.set(prop, implicitAnimation.release()); } @@ -186,13 +186,11 @@ // Make a list of transitions to be removed Vector toBeRemoved; - end = m_transitions.end(); - for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) { - ImplicitAnimation* anim = it->value.get(); - if (!anim->active()) { - animationController()->animationWillBeRemoved(anim); - toBeRemoved.append(anim->animatingProperty()); - LOG(Animations, "Removing ImplicitAnimation %p for property %s", anim, getPropertyName(anim->animatingProperty())); + for (auto& transition : m_transitions.values()) { + if (!transition->active()) { + animationController()->animationWillBeRemoved(transition.get()); + toBeRemoved.append(transition->animatingProperty()); + LOG(Animations, "Removing ImplicitAnimation %p from renderer %p for property %s", transition.get(), renderer, getPropertyName(transition->animatingProperty())); } } @@ -256,7 +254,7 @@ keyframeAnim->setIndex(i); } else if ((animation.duration() || animation.delay()) && animation.iterationCount() && animationName != none) { keyframeAnim = KeyframeAnimation::create(animation, renderer, i, this, targetStyle); - LOG(Animations, "Creating KeyframeAnimation %p with keyframes %s, duration %.2f, delay %.2f, iterations %.2f", keyframeAnim.get(), animation.name().utf8().data(), animation.duration(), animation.delay(), animation.iterationCount()); + LOG(Animations, "Creating KeyframeAnimation %p on renderer %p with keyframes %s, duration %.2f, delay %.2f, iterations %.2f", keyframeAnim.get(), renderer, animation.name().utf8().data(), animation.duration(), animation.delay(), animation.iterationCount()); if (m_suspended) { keyframeAnim->updatePlayState(AnimPlayStatePaused); LOG(Animations, " (created in suspended/paused state)"); @@ -277,14 +275,12 @@ // Make a list of animations to be removed. Vector animsToBeRemoved; - kfend = m_keyframeAnimations.end(); - for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != kfend; ++it) { - KeyframeAnimation* keyframeAnim = it->value.get(); - if (keyframeAnim->index() < 0) { - animsToBeRemoved.append(keyframeAnim->name().impl()); - animationController()->animationWillBeRemoved(keyframeAnim); - keyframeAnim->clear(); - LOG(Animations, "Removing KeyframeAnimation %p", keyframeAnim); + for (auto& animation : m_keyframeAnimations.values()) { + if (animation->index() < 0) { + animsToBeRemoved.append(animation->name().impl()); + animationController()->animationWillBeRemoved(animation.get()); + animation->clear(); + LOG(Animations, "Removing KeyframeAnimation %p from renderer %p", animation.get(), renderer); } } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/KeyframeAnimation.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/KeyframeAnimation.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/animation/KeyframeAnimation.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/animation/KeyframeAnimation.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -103,8 +103,15 @@ if (prevIndex == -1) prevIndex = 0; - if (nextIndex == -1) - nextIndex = m_keyframes.size() - 1; + if (nextIndex == -1) { + int lastIndex = m_keyframes.size() - 1; + if (prevIndex == lastIndex) + nextIndex = 0; + else + nextIndex = lastIndex; + } + + ASSERT(prevIndex != nextIndex); const KeyframeValue& prevKeyframe = m_keyframes[prevIndex]; const KeyframeValue& nextKeyframe = m_keyframes[nextIndex]; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/ChromeClient.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/ChromeClient.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/page/ChromeClient.h 2015-07-06 11:14:35.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/page/ChromeClient.h 2015-08-06 08:21:28.000000000 +0000 @@ -84,6 +84,10 @@ class ViewportConstraints; class Widget; +#if ENABLE(VIDEO) && USE(GSTREAMER) +class MediaPlayerRequestInstallMissingPluginsCallback; +#endif + struct DateTimeChooserParameters; struct FrameLoadRequest; struct GraphicsDeviceAdapter; @@ -437,6 +441,12 @@ virtual bool shouldDispatchFakeMouseMoveEvents() const { return true; } +#if ENABLE(VIDEO) +#if USE(GSTREAMER) + virtual void requestInstallMissingMediaPlugins(const String& /*details*/, MediaPlayerRequestInstallMissingPluginsCallback&) { }; +#endif +#endif + protected: virtual ~ChromeClient() { } }; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -895,9 +895,21 @@ cairo_set_line_cap(platformContext()->cr(), cairoCap); } +static inline bool isDashArrayAllZero(const DashArray& dashes) +{ + for (auto& dash : dashes) { + if (dash) + return false; + } + return true; +} + void GraphicsContext::setLineDash(const DashArray& dashes, float dashOffset) { - cairo_set_dash(platformContext()->cr(), dashes.data(), dashes.size(), dashOffset); + if (isDashArrayAllZero(dashes)) + cairo_set_dash(platformContext()->cr(), 0, 0, 0); + else + cairo_set_dash(platformContext()->cr(), dashes.data(), dashes.size(), dashOffset); } void GraphicsContext::setLineJoin(LineJoin lineJoin) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.cpp 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -115,6 +115,17 @@ FcPatternDestroy(ptr); } +template<> void refIfNotNull(FcConfig* ptr) +{ + if (LIKELY(ptr != nullptr)) + FcConfigReference(ptr); +} + +template<> void derefIfNotNull(FcConfig* ptr) +{ + if (LIKELY(ptr != nullptr)) + FcConfigDestroy(ptr); +} #endif } // namespace WTF diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.h 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/cairo/RefPtrCairo.h 2015-08-05 08:11:12.000000000 +0000 @@ -33,6 +33,7 @@ #if USE(FREETYPE) typedef struct _FcPattern FcPattern; +typedef struct _FcConfig FcConfig; #endif namespace WTF { @@ -58,6 +59,9 @@ #if USE(FREETYPE) template<> void refIfNotNull(FcPattern* ptr); template<> void derefIfNotNull(FcPattern* ptr); + +template<> void refIfNotNull(FcConfig* ptr); +template<> void derefIfNotNull(FcConfig* ptr); #endif } // namespace WTF diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/freetype/FcUniquePtr.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/freetype/FcUniquePtr.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/freetype/FcUniquePtr.h 1970-01-01 00:00:00.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/freetype/FcUniquePtr.h 2015-08-06 08:21:28.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2015 Igalia S.L + * + * 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 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 FcUniquePtr_h +#define FcUniquePtr_h + +#if USE(FREETYPE) + +#include +#include + +namespace WebCore { + +template +struct FcPtrDeleter { + void operator()(T* ptr) const = delete; +}; + +template +using FcUniquePtr = std::unique_ptr>; + +template<> struct FcPtrDeleter { + void operator()(FcFontSet* ptr) const + { + FcFontSetDestroy(ptr); + } +}; + +template<> struct FcPtrDeleter { + void operator()(FcLangSet* ptr) const + { + FcLangSetDestroy(ptr); + } +}; + +template<> struct FcPtrDeleter { + void operator()(FcObjectSet* ptr) const + { + FcObjectSetDestroy(ptr); + } +}; + +} // namespace WebCore + +#endif // USE(FREETYPE) + +#endif // FcUniquePtr_h diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -22,6 +22,7 @@ #include "config.h" #include "FontCache.h" +#include "FcUniquePtr.h" #include "Font.h" #include "OwnPtrCairo.h" #include "RefPtrCairo.h" @@ -158,6 +159,141 @@ } } +// This is based on Chromium BSD code from Skia (src/ports/SkFontMgr_fontconfig.cpp). It is a +// hack for lack of API in Fontconfig: https://bugs.freedesktop.org/show_bug.cgi?id=19375 +// FIXME: This is horrible. It should be deleted once Fontconfig can do this itself. +enum class AliasStrength { + Weak, + Strong, + Done +}; + +static AliasStrength strengthOfFirstAlias(const FcPattern& original) +{ + // Ideally there would exist a call like + // FcResult FcPatternIsWeak(pattern, object, id, FcBool* isWeak); + // + // However, there is no such call and as of Fc 2.11.0 even FcPatternEquals ignores the weak bit. + // Currently, the only reliable way of finding the weak bit is by its effect on matching. + // The weak bit only affects the matching of FC_FAMILY and FC_POSTSCRIPT_NAME object values. + // A element with the weak bit is scored after FC_LANG, without the weak bit is scored before. + // Note that the weak bit is stored on the element, not on the value it holds. + FcValue value; + FcResult result = FcPatternGet(&original, FC_FAMILY, 0, &value); + if (result != FcResultMatch) + return AliasStrength::Done; + + RefPtr pattern = adoptRef(FcPatternDuplicate(&original)); + FcBool hasMultipleFamilies = true; + while (hasMultipleFamilies) + hasMultipleFamilies = FcPatternRemove(pattern.get(), FC_FAMILY, 1); + + // Create a font set with two patterns. + // 1. the same FC_FAMILY as pattern and a lang object with only 'nomatchlang'. + // 2. a different FC_FAMILY from pattern and a lang object with only 'matchlang'. + FcUniquePtr fontSet(FcFontSetCreate()); + + FcUniquePtr strongLangSet(FcLangSetCreate()); + FcLangSetAdd(strongLangSet.get(), reinterpret_cast("nomatchlang")); + RefPtr strong = adoptRef(FcPatternDuplicate(pattern.get())); + FcPatternAddLangSet(strong.get(), FC_LANG, strongLangSet.get()); + + FcUniquePtr weakLangSet(FcLangSetCreate()); + FcLangSetAdd(weakLangSet.get(), reinterpret_cast("matchlang")); + RefPtr weak(FcPatternCreate()); + FcPatternAddString(weak.get(), FC_FAMILY, reinterpret_cast("nomatchstring")); + FcPatternAddLangSet(weak.get(), FC_LANG, weakLangSet.get()); + + FcFontSetAdd(fontSet.get(), strong.leakRef()); + FcFontSetAdd(fontSet.get(), weak.leakRef()); + + // Add 'matchlang' to the copy of the pattern. + FcPatternAddLangSet(pattern.get(), FC_LANG, weakLangSet.get()); + + // Run a match against the copy of the pattern. + // If the first element was weak, then we should match the pattern with 'matchlang'. + // If the first element was strong, then we should match the pattern with 'nomatchlang'. + + // Note that this config is only used for FcFontRenderPrepare, which we don't even want. + // However, there appears to be no way to match/sort without it. + RefPtr config = adoptRef(FcConfigCreate()); + FcFontSet* fontSets[1] = { fontSet.get() }; + RefPtr match = adoptRef(FcFontSetMatch(config.get(), fontSets, 1, pattern.get(), &result)); + + FcLangSet* matchLangSet; + FcPatternGetLangSet(match.get(), FC_LANG, 0, &matchLangSet); + return FcLangEqual == FcLangSetHasLang(matchLangSet, reinterpret_cast("matchlang")) + ? AliasStrength::Weak : AliasStrength::Strong; +} + +static Vector strongAliasesForFamily(const String& family) +{ + RefPtr pattern = adoptRef(FcPatternCreate()); + if (!FcPatternAddString(pattern.get(), FC_FAMILY, reinterpret_cast(family.utf8().data()))) + return Vector(); + + FcConfigSubstitute(nullptr, pattern.get(), FcMatchPattern); + FcDefaultSubstitute(pattern.get()); + + FcUniquePtr familiesOnly(FcObjectSetBuild(FC_FAMILY, nullptr)); + RefPtr minimal = adoptRef(FcPatternFilter(pattern.get(), familiesOnly.get())); + + // We really want to match strong (preferred) and same (acceptable) only here. + // If a family name was specified, assume that any weak matches after the last strong match + // are weak (default) and ignore them. + // The reason for is that after substitution the pattern for 'sans-serif' looks like + // "wwwwwwwwwwwwwwswww" where there are many weak but preferred names, followed by defaults. + // So it is possible to have weakly matching but preferred names. + // In aliases, bindings are weak by default, so this is easy and common. + // If no family name was specified, we'll probably only get weak matches, but that's ok. + int lastStrongId = -1; + int numIds = 0; + for (int id = 0; ; ++id) { + AliasStrength result = strengthOfFirstAlias(*minimal); + if (result == AliasStrength::Done) { + numIds = id; + break; + } + if (result == AliasStrength::Strong) + lastStrongId = id; + if (!FcPatternRemove(minimal.get(), FC_FAMILY, 0)) + return Vector(); + } + + // If they were all weak, then leave the pattern alone. + if (lastStrongId < 0) + return Vector(); + + // Remove everything after the last strong. + for (int id = lastStrongId + 1; id < numIds; ++id) { + if (!FcPatternRemove(pattern.get(), FC_FAMILY, lastStrongId + 1)) { + ASSERT_NOT_REACHED(); + return Vector(); + } + } + + // Take the resulting pattern and remove everything but the families. + minimal = adoptRef(FcPatternFilter(pattern.get(), familiesOnly.get())); + // Convert the pattern to a string, and cut out the non-family junk that gets added to the end. + char* patternChars = reinterpret_cast(FcPatternFormat(pattern.get(), reinterpret_cast("%{family}"))); + String patternString = String::fromUTF8(patternChars); + free(patternChars); + + Vector results; + patternString.split(',', results); + return results; +} + +static bool areStronglyAliased(const String& familyA, const String& familyB) +{ + for (auto& family : strongAliasesForFamily(familyA)) { + if (family == familyB) + return true; + } + return false; +} + + std::unique_ptr FontCache::createFontPlatformData(const FontDescription& fontDescription, const AtomicString& family) { // The CSS font matching algorithm (http://www.w3.org/TR/css3-fonts/#font-matching-algorithm) @@ -179,10 +315,17 @@ return nullptr; // The strategy is originally from Skia (src/ports/SkFontHost_fontconfig.cpp): - - // Allow Fontconfig to do pre-match substitution. Unless we are accessing a "fallback" - // family like "sans," this is the only time we allow Fontconfig to substitute one - // family name for another (i.e. if the fonts are aliased to each other). + // + // We do not normally allow fontconfig to substitute one font family for another, since this + // would break CSS font family fallback: the website should be in control of fallback. During + // normal font matching, the only font family substitution permitted is for generic families + // (sans, serif, monospace) or for strongly-aliased fonts (which are to be treated as + // effectively identical). This is because the font matching step is designed to always find a + // match for the font, which we don't want. + // + // Fontconfig is used in two stages: (1) configuration and (2) matching. During the + // configuration step, before any matching occurs, we allow arbitrary family substitutions, + // since this is an exact matter of respecting the user's font configuration. FcConfigSubstitute(0, pattern.get(), FcMatchPattern); FcDefaultSubstitute(pattern.get()); @@ -199,13 +342,15 @@ FcPatternGetString(resultPattern.get(), FC_FAMILY, 0, &fontConfigFamilyNameAfterMatching); String familyNameAfterMatching = String::fromUTF8(reinterpret_cast(fontConfigFamilyNameAfterMatching)); - // If Fontconfig gave use a different font family than the one we requested, we should ignore it - // and allow WebCore to give us the next font on the CSS fallback list. The only exception is if - // this family name is a commonly used generic family. + // If Fontconfig gave us a different font family than the one we requested, we should ignore it + // and allow WebCore to give us the next font on the CSS fallback list. The exceptions are if + // this family name is a commonly-used generic family, or if the families are strongly-aliased. + // Checking for a strong alias comes last, since it is slow. if (!equalIgnoringCase(familyNameAfterConfiguration, familyNameAfterMatching) && !(equalIgnoringCase(familyNameString, "sans") || equalIgnoringCase(familyNameString, "sans-serif") || equalIgnoringCase(familyNameString, "serif") || equalIgnoringCase(familyNameString, "monospace") - || equalIgnoringCase(familyNameString, "fantasy") || equalIgnoringCase(familyNameString, "cursive"))) + || equalIgnoringCase(familyNameString, "fantasy") || equalIgnoringCase(familyNameString, "cursive")) + && !areStronglyAliased(familyNameAfterConfiguration, familyNameAfterMatching)) return nullptr; // Verify that this font has an encoding compatible with Fontconfig. Fontconfig currently diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/GStreamerUtilities.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -105,9 +105,9 @@ void mapGstBuffer(GstBuffer* buffer) { - GstMapInfo* mapInfo = g_slice_new(GstMapInfo); + GstMapInfo* mapInfo = static_cast(fastMalloc(sizeof(GstMapInfo))); if (!gst_buffer_map(buffer, mapInfo, GST_MAP_WRITE)) { - g_slice_free(GstMapInfo, mapInfo); + fastFree(mapInfo); gst_buffer_unref(buffer); return; } @@ -125,7 +125,7 @@ return; gst_buffer_unmap(buffer, mapInfo); - g_slice_free(GstMapInfo, mapInfo); + fastFree(mapInfo); } bool initializeGStreamer() diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h 2015-08-06 08:21:28.000000000 +0000 @@ -22,11 +22,13 @@ #if USE(GSTREAMER) #include +#include #include namespace WTF { WTF_DEFINE_GPTR_DELETER(GstStructure, gst_structure_free) +WTF_DEFINE_GPTR_DELETER(GstInstallPluginsContext, gst_install_plugins_context_free) } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -31,6 +31,7 @@ #include "URL.h" #include "MIMETypeRegistry.h" #include "MediaPlayer.h" +#include "MediaPlayerRequestInstallMissingPluginsCallback.h" #include "NotImplemented.h" #include "SecurityOrigin.h" #include "TimeRanges.h" @@ -123,12 +124,6 @@ } #endif -static void mediaPlayerPrivatePluginInstallerResultFunction(GstInstallPluginsReturn result, gpointer userData) -{ - MediaPlayerPrivateGStreamer* player = reinterpret_cast(userData); - player->handlePluginInstallerResult(result); -} - void MediaPlayerPrivateGStreamer::setAudioStreamProperties(GObject* object) { if (g_strcmp0(G_OBJECT_TYPE_NAME(object), "GstPulseSink")) @@ -220,7 +215,6 @@ , m_audioSourceProvider(AudioSourceProviderGStreamer::create()) #endif , m_requestedState(GST_STATE_VOID_PENDING) - , m_missingPlugins(false) { } @@ -249,6 +243,10 @@ reinterpret_cast(setAudioStreamPropertiesCallback), this); m_readyTimerHandler.cancel(); + if (m_missingPluginsCallback) { + m_missingPluginsCallback->invalidate(); + m_missingPluginsCallback = nullptr; + } if (m_playBin) { GRefPtr bus = adoptGRef(gst_pipeline_get_bus(GST_PIPELINE(m_playBin.get()))); @@ -936,7 +934,7 @@ case GST_MESSAGE_ERROR: if (m_resetPipeline) break; - if (m_missingPlugins) + if (m_missingPluginsCallback) break; gst_message_parse_error(message, &err.outPtr(), &debug.outPtr()); ERROR_MEDIA_MESSAGE("Error %d: %s (url=%s)", err->code, err->message, m_url.string().utf8().data()); @@ -1031,11 +1029,18 @@ break; case GST_MESSAGE_ELEMENT: if (gst_is_missing_plugin_message(message)) { - gchar* detail = gst_missing_plugin_message_get_installer_detail(message); - gchar* detailArray[2] = {detail, 0}; - GstInstallPluginsReturn result = gst_install_plugins_async(detailArray, 0, mediaPlayerPrivatePluginInstallerResultFunction, this); - m_missingPlugins = result == GST_INSTALL_PLUGINS_STARTED_OK; - g_free(detail); + GUniquePtr detail(gst_missing_plugin_message_get_installer_detail(message)); + if (gst_install_plugins_supported()) { + m_missingPluginsCallback = MediaPlayerRequestInstallMissingPluginsCallback::create([this](uint32_t result) { + m_missingPluginsCallback = nullptr; + if (result != GST_INSTALL_PLUGINS_SUCCESS) + return; + + changePipelineState(GST_STATE_READY); + changePipelineState(GST_STATE_PAUSED); + }); + m_player->client().requestInstallMissingPlugins(String::fromUTF8(detail.get()), *m_missingPluginsCallback); + } } #if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS) else { @@ -1060,15 +1065,6 @@ return TRUE; } -void MediaPlayerPrivateGStreamer::handlePluginInstallerResult(GstInstallPluginsReturn result) -{ - m_missingPlugins = false; - if (result == GST_INSTALL_PLUGINS_SUCCESS) { - changePipelineState(GST_STATE_READY); - changePipelineState(GST_STATE_PAUSED); - } -} - void MediaPlayerPrivateGStreamer::processBufferingStats(GstMessage* message) { m_buffering = true; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2015-08-06 08:21:28.000000000 +0000 @@ -58,6 +58,7 @@ class AudioTrackPrivateGStreamer; class InbandMetadataTextTrackPrivateGStreamer; class InbandTextTrackPrivateGStreamer; +class MediaPlayerRequestInstallMissingPluginsCallback; class VideoTrackPrivateGStreamer; class MediaPlayerPrivateGStreamer : public MediaPlayerPrivateGStreamerBase { @@ -234,7 +235,7 @@ #endif GstState m_requestedState; GRefPtr m_autoAudioSink; - bool m_missingPlugins; + RefPtr m_missingPluginsCallback; #if ENABLE(VIDEO_TRACK) Vector> m_audioTracks; Vector> m_textTracks; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h 1970-01-01 00:00:00.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/gstreamer/MediaPlayerRequestInstallMissingPluginsCallback.h 2015-08-04 13:37:46.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2015 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 + * aint 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 MediaPlayerRequestInstallMissingPluginsCallback_h +#define MediaPlayerRequestInstallMissingPluginsCallback_h + +#if ENABLE(VIDEO) && USE(GSTREAMER) +#include + +namespace WebCore { + +class MediaPlayerRequestInstallMissingPluginsCallback : public RefCounted { + WTF_MAKE_FAST_ALLOCATED(); +public: + static Ref create(std::function&& function) + { + return adoptRef(*new MediaPlayerRequestInstallMissingPluginsCallback(WTF::move(function))); + } + + void invalidate() + { + m_function = nullptr; + } + + void complete(uint32_t result) + { + if (!m_function) + return; + m_function(result); + m_function = nullptr; + } + +private: + MediaPlayerRequestInstallMissingPluginsCallback(std::function&& function) + : m_function(WTF::move(function)) + { + } + + std::function m_function; +}; + +} // namespace WebCore + +#endif // ENABLE(VIDEO) && USE(GSTREAMER) +#endif // MediaPlayerRequestInstallMissingPluginsCallback_h diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/MediaPlayer.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/MediaPlayer.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/graphics/MediaPlayer.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/graphics/MediaPlayer.h 2015-08-06 08:21:28.000000000 +0000 @@ -139,6 +139,10 @@ struct GraphicsDeviceAdapter; #endif +#if USE(GSTREAMER) +class MediaPlayerRequestInstallMissingPluginsCallback; +#endif + class MediaPlayerClient { public: virtual ~MediaPlayerClient() { } @@ -267,6 +271,10 @@ virtual void mediaPlayerEngineFailedToLoad() const { } virtual double mediaPlayerRequestedPlaybackRate() const { return 0; } + +#if USE(GSTREAMER) + virtual void requestInstallMissingPlugins(const String&, MediaPlayerRequestInstallMissingPluginsCallback&) { }; +#endif }; class MediaPlayerSupportsTypeClient { diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -33,7 +33,7 @@ str.replace(NonBreakingSpaceCharacter, SpaceCharacter); } -HashMap DataObjectGtk::unknownTypes() const +const HashMap& DataObjectGtk::unknownTypes() const { return m_unknownTypeData; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/DataObjectGtk.h 2015-08-06 08:21:28.000000000 +0000 @@ -54,7 +54,7 @@ String text() const { return m_text; } String markup() const { return m_markup; } String unknownTypeData(const String& type) const { return m_unknownTypeData.get(type); } - HashMap unknownTypes() const; + const HashMap& unknownTypes() const; void setText(const String&); void setMarkup(const String&); void setUnknownTypeData(const String& type, const String& data) { m_unknownTypeData.set(type, data); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp 2015-08-04 11:46:27.000000000 +0000 @@ -52,6 +52,7 @@ { "png", "image/png" }, { "rss", "application/rss+xml" }, { "svg", "image/svg+xml" }, + { "swf", "application/x-shockwave-flash" }, { "text", "text/plain" }, { "txt", "text/plain" }, { "xbm", "image/x-xbitmap" }, diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardGtk.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardGtk.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardGtk.cpp 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardGtk.cpp 2015-08-05 09:28:26.000000000 +0000 @@ -76,7 +76,7 @@ Pasteboard::Pasteboard(PassRefPtr dataObject) : m_dataObject(dataObject) - , m_gtkClipboard(0) + , m_gtkClipboard(nullptr) { ASSERT(m_dataObject); } @@ -86,6 +86,7 @@ , m_gtkClipboard(gtkClipboard) { ASSERT(m_dataObject); + PasteboardHelper::singleton().registerClipboard(gtkClipboard); } Pasteboard::~Pasteboard() @@ -147,7 +148,7 @@ m_dataObject->setText(text); if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard, (smartReplaceOption == CanSmartReplace) ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard, (smartReplaceOption == CanSmartReplace) ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste); } void Pasteboard::write(const PasteboardURL& pasteboardURL) @@ -158,7 +159,7 @@ m_dataObject->setURL(pasteboardURL.url, pasteboardURL.title); if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard); } void Pasteboard::write(const PasteboardImage& pasteboardImage) @@ -174,7 +175,7 @@ m_dataObject->setImage(pixbuf.get()); if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard); } void Pasteboard::write(const PasteboardWebContent& pasteboardContent) @@ -184,7 +185,7 @@ m_dataObject->setMarkup(pasteboardContent.markup); if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard, pasteboardContent.canSmartCopyOrDelete ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste, pasteboardContent.callback.get()); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard, pasteboardContent.canSmartCopyOrDelete ? PasteboardHelper::IncludeSmartPaste : PasteboardHelper::DoNotIncludeSmartPaste, pasteboardContent.callback.get()); } void Pasteboard::writePasteboard(const Pasteboard& sourcePasteboard) @@ -203,14 +204,12 @@ if (sourceDataObject->hasImage()) m_dataObject->setImage(sourceDataObject->image()); if (sourceDataObject->hasUnknownTypeData()) { - auto types = m_dataObject->unknownTypes(); - auto end = types.end(); - for (auto it = types.begin(); it != end; ++it) - m_dataObject->setUnknownTypeData(it->key, it->value); + for (auto& it : m_dataObject->unknownTypes()) + m_dataObject->setUnknownTypeData(it.key, it.value); } if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard); } void Pasteboard::clear() @@ -222,7 +221,7 @@ m_dataObject->clearAllExceptFilenames(); if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard); } void Pasteboard::clear(const String& type) @@ -247,12 +246,12 @@ } if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->writeClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().writeClipboardContents(m_gtkClipboard); } bool Pasteboard::canSmartReplace() { - return m_gtkClipboard && PasteboardHelper::defaultPasteboardHelper()->clipboardContentSupportsSmartReplace(m_gtkClipboard); + return m_gtkClipboard && PasteboardHelper::singleton().clipboardContentSupportsSmartReplace(m_gtkClipboard); } #if ENABLE(DRAG_SUPPORT) @@ -264,14 +263,14 @@ void Pasteboard::read(PasteboardPlainText& text) { if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().getClipboardContents(m_gtkClipboard); text.text = m_dataObject->text(); } bool Pasteboard::hasData() { if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().getClipboardContents(m_gtkClipboard); return m_dataObject->hasText() || m_dataObject->hasMarkup() || m_dataObject->hasURIList() || m_dataObject->hasImage() || m_dataObject->hasUnknownTypeData(); } @@ -279,7 +278,7 @@ Vector Pasteboard::types() { if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().getClipboardContents(m_gtkClipboard); Vector types; if (m_dataObject->hasText()) { @@ -299,10 +298,8 @@ if (m_dataObject->hasFilenames()) types.append(ASCIILiteral("Files")); - auto unknownTypes = m_dataObject->unknownTypes(); - auto end = unknownTypes.end(); - for (auto it = unknownTypes.begin(); it != end; ++it) - types.append(it->key); + for (auto& key : m_dataObject->unknownTypes().keys()) + types.append(key); return types; } @@ -310,7 +307,7 @@ String Pasteboard::readString(const String& type) { if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().getClipboardContents(m_gtkClipboard); switch (dataObjectTypeFromHTMLClipboardType(type)) { case ClipboardDataTypeURIList: @@ -333,7 +330,7 @@ Vector Pasteboard::readFilenames() { if (m_gtkClipboard) - PasteboardHelper::defaultPasteboardHelper()->getClipboardContents(m_gtkClipboard); + PasteboardHelper::singleton().getClipboardContents(m_gtkClipboard); return m_dataObject->filenames(); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -41,7 +41,7 @@ static GdkAtom smartPasteAtom; static GdkAtom unknownAtom; -static String gMarkupPrefix; +static const String gMarkupPrefix = ASCIILiteral(""); static void removeMarkupPrefix(String& markup) { @@ -51,51 +51,39 @@ markup.remove(0, gMarkupPrefix.length()); } -static void initGdkAtoms() +PasteboardHelper& PasteboardHelper::singleton() { - static gboolean initialized = FALSE; - - if (initialized) - return; - - initialized = TRUE; - - textPlainAtom = gdk_atom_intern("text/plain;charset=utf-8", FALSE); - markupAtom = gdk_atom_intern("text/html", FALSE); - netscapeURLAtom = gdk_atom_intern("_NETSCAPE_URL", FALSE); - uriListAtom = gdk_atom_intern("text/uri-list", FALSE); - smartPasteAtom = gdk_atom_intern("application/vnd.webkitgtk.smartpaste", FALSE); - unknownAtom = gdk_atom_intern("application/vnd.webkitgtk.unknown", FALSE); - gMarkupPrefix = ""; -} - -PasteboardHelper* PasteboardHelper::defaultPasteboardHelper() -{ - DEPRECATED_DEFINE_STATIC_LOCAL(PasteboardHelper, defaultHelper, ()); - return &defaultHelper; + static PasteboardHelper helper; + return helper; } PasteboardHelper::PasteboardHelper() - : m_targetList(gtk_target_list_new(0, 0)) + : m_targetList(adoptGRef(gtk_target_list_new(nullptr, 0))) { - initGdkAtoms(); - - gtk_target_list_add_text_targets(m_targetList, PasteboardHelper::TargetTypeText); - gtk_target_list_add(m_targetList, markupAtom, 0, PasteboardHelper::TargetTypeMarkup); - gtk_target_list_add_uri_targets(m_targetList, PasteboardHelper::TargetTypeURIList); - gtk_target_list_add(m_targetList, netscapeURLAtom, 0, PasteboardHelper::TargetTypeNetscapeURL); - gtk_target_list_add_image_targets(m_targetList, PasteboardHelper::TargetTypeImage, TRUE); - gtk_target_list_add(m_targetList, unknownAtom, 0, PasteboardHelper::TargetTypeUnknown); + textPlainAtom = gdk_atom_intern_static_string("text/plain;charset=utf-8"); + markupAtom = gdk_atom_intern_static_string("text/html"); + netscapeURLAtom = gdk_atom_intern_static_string("_NETSCAPE_URL"); + uriListAtom = gdk_atom_intern_static_string("text/uri-list"); + smartPasteAtom = gdk_atom_intern_static_string("application/vnd.webkitgtk.smartpaste"); + unknownAtom = gdk_atom_intern_static_string("application/vnd.webkitgtk.unknown"); + + gtk_target_list_add_text_targets(m_targetList.get(), PasteboardHelper::TargetTypeText); + gtk_target_list_add(m_targetList.get(), markupAtom, 0, PasteboardHelper::TargetTypeMarkup); + gtk_target_list_add_uri_targets(m_targetList.get(), PasteboardHelper::TargetTypeURIList); + gtk_target_list_add(m_targetList.get(), netscapeURLAtom, 0, PasteboardHelper::TargetTypeNetscapeURL); + gtk_target_list_add_image_targets(m_targetList.get(), PasteboardHelper::TargetTypeImage, TRUE); + gtk_target_list_add(m_targetList.get(), unknownAtom, 0, PasteboardHelper::TargetTypeUnknown); } PasteboardHelper::~PasteboardHelper() { - gtk_target_list_unref(m_targetList); + for (auto* clipboard : m_gtkClipboards) + gtk_clipboard_store(clipboard); } GtkTargetList* PasteboardHelper::targetList() const { - return m_targetList; + return m_targetList.get(); } static String selectionDataToUTF8String(GtkSelectionData* data) @@ -174,10 +162,8 @@ GVariantBuilder builder; g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); - auto types = dataObject->unknownTypes(); - auto end = types.end(); - for (auto it = types.begin(); it != end; ++it) { - GUniquePtr dictItem(g_strdup_printf("{'%s', '%s'}", it->key.utf8().data(), it->value.utf8().data())); + for (auto& it : dataObject->unknownTypes()) { + GUniquePtr dictItem(g_strdup_printf("{'%s', '%s'}", it.key.utf8().data(), it.value.utf8().data())); g_variant_builder_add_parsed(&builder, dictItem.get()); } @@ -189,7 +175,7 @@ GtkTargetList* PasteboardHelper::targetListForDataObject(DataObjectGtk* dataObject, SmartPasteInclusion shouldInludeSmartPaste) { - GtkTargetList* list = gtk_target_list_new(0, 0); + GtkTargetList* list = gtk_target_list_new(nullptr, 0); if (dataObject->hasText()) gtk_target_list_add_text_targets(list, TargetTypeText); @@ -278,7 +264,7 @@ { DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard); ASSERT(dataObject); - PasteboardHelper::defaultPasteboardHelper()->fillSelectionData(selectionData, info, dataObject); + PasteboardHelper::singleton().fillSelectionData(selectionData, info, dataObject); } static void clearClipboardContentsCallback(GtkClipboard* clipboard, gpointer data) @@ -334,5 +320,11 @@ return gtk_clipboard_wait_is_target_available(clipboard, smartPasteAtom); } +void PasteboardHelper::registerClipboard(GtkClipboard* clipboard) +{ + ASSERT(clipboard); + m_gtkClipboards.add(clipboard); +} + } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.h 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/PasteboardHelper.h 2015-08-06 08:21:28.000000000 +0000 @@ -25,18 +25,19 @@ #ifndef PasteboardHelper_h #define PasteboardHelper_h -#include +#include +#include #include +#include namespace WebCore { class DataObjectGtk; class PasteboardHelper { + WTF_MAKE_NONCOPYABLE(PasteboardHelper); public: - PasteboardHelper(); - virtual ~PasteboardHelper(); - static PasteboardHelper* defaultPasteboardHelper(); + static PasteboardHelper& singleton(); enum SmartPasteInclusion { IncludeSmartPaste, DoNotIncludeSmartPaste }; @@ -51,8 +52,14 @@ enum PasteboardTargetType { TargetTypeMarkup, TargetTypeText, TargetTypeImage, TargetTypeURIList, TargetTypeNetscapeURL, TargetTypeSmartPaste, TargetTypeUnknown }; bool clipboardContentSupportsSmartReplace(GtkClipboard*); + void registerClipboard(GtkClipboard*); + private: - GtkTargetList* m_targetList; + PasteboardHelper(); + ~PasteboardHelper(); + + GRefPtr m_targetList; + HashSet m_gtkClipboards; }; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/po/sv.po webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/po/sv.po --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/gtk/po/sv.po 2015-03-04 07:19:42.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/gtk/po/sv.po 2015-08-04 11:46:27.000000000 +0000 @@ -1,2531 +1,2053 @@ # Swedish translation for webkitgtk+. # This file is put in the public domain. # Daniel Nylander , 2009, 2010. -# +# Josef Andersson , 2015. msgid "" msgstr "" "Project-Id-Version: webkitgtk+\n" -"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n" -"POT-Creation-Date: 2013-03-15 17:34-0300\n" -"PO-Revision-Date: 2010-02-21 10:35+0100\n" -"Last-Translator: Daniel Nylander \n" +"Report-Msgid-Bugs-To: https://bugs.webkit.org\n" +"POT-Creation-Date: 2015-07-21 12:08+0000\n" +"PO-Revision-Date: 2015-07-21 11:11+0100\n" +"Last-Translator: Josef Andersson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.7.5\n" -#: ErrorsGtk.cpp:37 +#: ../ErrorsGtk.cpp:33 msgid "Load request cancelled" -msgstr "" +msgstr "InlƤsningsbegƤran avbruten" -#: ErrorsGtk.cpp:43 +#: ../ErrorsGtk.cpp:39 msgid "Not allowed to use restricted network port" -msgstr "" +msgstr "Inte tillĆ„ten att anvƤnda begrƤnsad nƤtverksport" -#: ErrorsGtk.cpp:49 +#: ../ErrorsGtk.cpp:45 msgid "URL cannot be shown" -msgstr "" +msgstr "URL kan inte visas" -#: ErrorsGtk.cpp:55 +#: ../ErrorsGtk.cpp:51 msgid "Frame load was interrupted" -msgstr "" +msgstr "RaminlƤsning stƶrdes" -#: ErrorsGtk.cpp:61 +#: ../ErrorsGtk.cpp:57 msgid "Content with the specified MIME type cannot be shown" -msgstr "" +msgstr "InnehĆ„ll med den angivna MIME-typen kan inte visas" -#: ErrorsGtk.cpp:67 +#: ../ErrorsGtk.cpp:63 msgid "File does not exist" -msgstr "" +msgstr "Filen finns inte" -#: ErrorsGtk.cpp:73 +#: ../ErrorsGtk.cpp:69 msgid "Plugin will handle load" -msgstr "" +msgstr "Insticksmodulen kommer att hantera inlƤsning" -#: ErrorsGtk.cpp:85 +#: ../ErrorsGtk.cpp:81 msgid "User cancelled the download" msgstr "AnvƤndaren avbrƶt hƤmtningen" -#: ErrorsGtk.cpp:105 +#: ../ErrorsGtk.cpp:97 msgid "Printer not found" -msgstr "" +msgstr "Hittade inte skrivare" -#: ErrorsGtk.cpp:112 +#: ../ErrorsGtk.cpp:102 msgid "Invalid page range" -msgstr "" - -#: GtkAuthenticationDialog.cpp:171 -#, c-format -msgid "The site %s:%i requests a username and password" -msgstr "" - -#: GtkAuthenticationDialog.cpp:175 -#, fuzzy -msgid "_Remember password" -msgstr "Kom ihĆ„g lƶsenordet" - -#: GtkAuthenticationDialog.cpp:201 -msgid "Server message:" -msgstr "" - -#: GtkAuthenticationDialog.cpp:202 GtkAuthenticationDialog.cpp:210 -msgid "Username:" -msgstr "AnvƤndarnamn:" - -#: GtkAuthenticationDialog.cpp:203 GtkAuthenticationDialog.cpp:211 -msgid "Password:" -msgstr "Lƶsenord:" +msgstr "Ogiltigt sidintervall" -#: LocalizedStringsGtk.cpp:56 LocalizedStringsGtk.cpp:61 +#: ../LocalizedStringsGtk.cpp:55 ../LocalizedStringsGtk.cpp:60 msgid "Submit" msgstr "Skicka" -#: LocalizedStringsGtk.cpp:66 +#: ../LocalizedStringsGtk.cpp:65 msgid "Reset" msgstr "ƅterstƤll" -#: LocalizedStringsGtk.cpp:71 +#: ../LocalizedStringsGtk.cpp:70 msgid "Details" -msgstr "" +msgstr "Detaljer" -#: LocalizedStringsGtk.cpp:76 +#: ../LocalizedStringsGtk.cpp:75 msgid "This is a searchable index. Enter search keywords: " -msgstr "" +msgstr "Detta Ƥr ett sƶkbart index. Ange sƶknyckelord: " -#: LocalizedStringsGtk.cpp:81 +#: ../LocalizedStringsGtk.cpp:80 msgid "Choose File" msgstr "VƤlj fil" -#: LocalizedStringsGtk.cpp:86 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:85 msgid "Choose Files" -msgstr "VƤlj fil" +msgstr "VƤlj filer" -#: LocalizedStringsGtk.cpp:91 LocalizedStringsGtk.cpp:96 +#: ../LocalizedStringsGtk.cpp:90 ../LocalizedStringsGtk.cpp:95 msgid "(None)" msgstr "(Ingen)" -#: LocalizedStringsGtk.cpp:101 +#: ../LocalizedStringsGtk.cpp:100 msgid "Open Link in New _Window" msgstr "Ɩppna lƤnk i nytt _fƶnster" -#: LocalizedStringsGtk.cpp:106 +#: ../LocalizedStringsGtk.cpp:105 msgid "_Download Linked File" msgstr "_HƤmta lƤnkad fil" -#: LocalizedStringsGtk.cpp:111 +#: ../LocalizedStringsGtk.cpp:110 msgid "Copy Link Loc_ation" msgstr "Kopiera lƤnkens ad_ress" -#: LocalizedStringsGtk.cpp:116 +#: ../LocalizedStringsGtk.cpp:115 msgid "Open _Image in New Window" msgstr "Ɩppna _bild i nytt fƶnster" -#: LocalizedStringsGtk.cpp:121 +#: ../LocalizedStringsGtk.cpp:120 msgid "Sa_ve Image As" msgstr "Spa_ra bild som" -#: LocalizedStringsGtk.cpp:126 +#: ../LocalizedStringsGtk.cpp:125 msgid "Cop_y Image" msgstr "Kop_iera bild" -#: LocalizedStringsGtk.cpp:131 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:130 msgid "Copy Image _Address" -msgstr "Kop_iera bild" +msgstr "Kop_iera bildadress" -#: LocalizedStringsGtk.cpp:136 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:135 msgid "Open _Video in New Window" -msgstr "Ɩppna _bild i nytt fƶnster" +msgstr "Ɩppna _video i nytt fƶnster" -#: LocalizedStringsGtk.cpp:141 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:140 msgid "Open _Audio in New Window" -msgstr "Ɩppna lƤnk i nytt _fƶnster" +msgstr "Ɩppna ljud i nytt _fƶnster" -#: LocalizedStringsGtk.cpp:146 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:145 +msgid "Download _Video" +msgstr "HƤmta _video" + +#: ../LocalizedStringsGtk.cpp:150 +msgid "Download _Audio" +msgstr "HƤmta _ljud" + +#: ../LocalizedStringsGtk.cpp:155 msgid "Cop_y Video Link Location" -msgstr "Kopiera lƤnkens ad_ress" +msgstr "Kopier_a videolƤnkens plats" -#: LocalizedStringsGtk.cpp:151 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:160 msgid "Cop_y Audio Link Location" -msgstr "Kopiera lƤnkens ad_ress" +msgstr "Kopiera _ljudlƤnkens plats" -#: LocalizedStringsGtk.cpp:156 +#: ../LocalizedStringsGtk.cpp:165 msgid "_Toggle Media Controls" -msgstr "" +msgstr "_VƤxla mediakontroller" + +#: ../LocalizedStringsGtk.cpp:170 +msgid "_Show Media Controls" +msgstr "_Visa mediakontroller" -#: LocalizedStringsGtk.cpp:161 +#: ../LocalizedStringsGtk.cpp:175 +msgid "_Hide Media Controls" +msgstr "_Dƶlj mediakontroller" + +#: ../LocalizedStringsGtk.cpp:180 msgid "Toggle Media _Loop Playback" -msgstr "" +msgstr "VƤxla media_loopuppspelning" -#: LocalizedStringsGtk.cpp:166 +#: ../LocalizedStringsGtk.cpp:185 msgid "Switch Video to _Fullscreen" -msgstr "" +msgstr "VƤxla video till _helskƤrm" -#: LocalizedStringsGtk.cpp:171 +#: ../LocalizedStringsGtk.cpp:190 msgid "_Play" -msgstr "" +msgstr "_Spela" -#: LocalizedStringsGtk.cpp:176 +#: ../LocalizedStringsGtk.cpp:195 msgid "_Pause" -msgstr "" +msgstr "_Pausa" -#: LocalizedStringsGtk.cpp:181 +#: ../LocalizedStringsGtk.cpp:200 msgid "_Mute" -msgstr "" +msgstr "_DƤmpa" -#: LocalizedStringsGtk.cpp:186 +#: ../LocalizedStringsGtk.cpp:205 msgid "Open _Frame in New Window" msgstr "Ɩppna _ram i nytt fƶnster" -#: LocalizedStringsGtk.cpp:209 +#: ../LocalizedStringsGtk.cpp:228 msgid "_Insert Unicode Control Character" msgstr "_Infoga Unicode-styrtecken" -#: LocalizedStringsGtk.cpp:214 +#: ../LocalizedStringsGtk.cpp:233 msgid "Input _Methods" msgstr "Inmatnings_metoder" -#: LocalizedStringsGtk.cpp:237 +#: ../LocalizedStringsGtk.cpp:256 msgid "_Reload" msgstr "_Uppdatera" -#: LocalizedStringsGtk.cpp:254 +#: ../LocalizedStringsGtk.cpp:273 msgid "No Guesses Found" msgstr "Inga gissningar hittades" -#: LocalizedStringsGtk.cpp:259 +#: ../LocalizedStringsGtk.cpp:278 msgid "_Ignore Spelling" msgstr "_Ignorera stavfel" -#: LocalizedStringsGtk.cpp:264 +#: ../LocalizedStringsGtk.cpp:283 msgid "_Learn Spelling" msgstr "_LƤr stavning" -#: LocalizedStringsGtk.cpp:269 +#: ../LocalizedStringsGtk.cpp:288 msgid "_Search the Web" msgstr "_Sƶk pĆ„ webben" -#: LocalizedStringsGtk.cpp:274 +#: ../LocalizedStringsGtk.cpp:293 msgid "_Look Up in Dictionary" msgstr "Sl_Ć„ upp i ordbok" -#: LocalizedStringsGtk.cpp:279 +#: ../LocalizedStringsGtk.cpp:298 msgid "_Open Link" msgstr "_Ɩppna lƤnk" -#: LocalizedStringsGtk.cpp:284 +#: ../LocalizedStringsGtk.cpp:303 msgid "Ignore _Grammar" msgstr "Ignorera _grammatikfel" -#: LocalizedStringsGtk.cpp:289 +#: ../LocalizedStringsGtk.cpp:308 msgid "Spelling and _Grammar" msgstr "Stavning och _grammatik" -#: LocalizedStringsGtk.cpp:294 +#: ../LocalizedStringsGtk.cpp:313 msgid "_Show Spelling and Grammar" msgstr "_Visa stavning och grammatik" -#: LocalizedStringsGtk.cpp:294 +#: ../LocalizedStringsGtk.cpp:313 msgid "_Hide Spelling and Grammar" msgstr "_Dƶlj stavning och grammatik" -#: LocalizedStringsGtk.cpp:299 +#: ../LocalizedStringsGtk.cpp:318 msgid "_Check Document Now" msgstr "_Kontrollera dokumentet nu" -#: LocalizedStringsGtk.cpp:304 +#: ../LocalizedStringsGtk.cpp:323 msgid "Check Spelling While _Typing" msgstr "Kontrollera stavning vid _inmatning" -#: LocalizedStringsGtk.cpp:309 +#: ../LocalizedStringsGtk.cpp:328 msgid "Check _Grammar With Spelling" msgstr "Kontrollera _grammatik med stavning" -#: LocalizedStringsGtk.cpp:314 +#: ../LocalizedStringsGtk.cpp:333 msgid "_Font" -msgstr "_Typsnitt" +msgstr "_Teckensnitt" -#: LocalizedStringsGtk.cpp:337 +#: ../LocalizedStringsGtk.cpp:356 msgid "_Outline" msgstr "_Kontur" -#: LocalizedStringsGtk.cpp:342 +#: ../LocalizedStringsGtk.cpp:361 msgid "Inspect _Element" msgstr "Inspektera _element" -#: LocalizedStringsGtk.cpp:347 +#: ../LocalizedStringsGtk.cpp:366 msgid "LRM _Left-to-right mark" msgstr "LRM _Left-to-right mark" -#: LocalizedStringsGtk.cpp:352 +#: ../LocalizedStringsGtk.cpp:371 msgid "RLM _Right-to-left mark" msgstr "RLM _Right-to-left mark" -#: LocalizedStringsGtk.cpp:357 +#: ../LocalizedStringsGtk.cpp:376 msgid "LRE Left-to-right _embedding" msgstr "LRE Left-to-right _embedding" -#: LocalizedStringsGtk.cpp:362 +#: ../LocalizedStringsGtk.cpp:381 msgid "RLE Right-to-left e_mbedding" msgstr "RLE Right-to-left e_mbedding" -#: LocalizedStringsGtk.cpp:367 +#: ../LocalizedStringsGtk.cpp:386 msgid "LRO Left-to-right _override" msgstr "LRO Left-to-right _override" -#: LocalizedStringsGtk.cpp:372 +#: ../LocalizedStringsGtk.cpp:391 msgid "RLO Right-to-left o_verride" msgstr "RLO Right-to-left o_verride" -#: LocalizedStringsGtk.cpp:377 +#: ../LocalizedStringsGtk.cpp:396 msgid "PDF _Pop directional formatting" msgstr "PDF _Pop directional formatting" -#: LocalizedStringsGtk.cpp:382 +#: ../LocalizedStringsGtk.cpp:401 msgid "ZWS _Zero width space" msgstr "ZWS _Zero width space" -#: LocalizedStringsGtk.cpp:387 +#: ../LocalizedStringsGtk.cpp:406 msgid "ZWJ Zero width _joiner" msgstr "ZWJ Zero width _joiner" -#: LocalizedStringsGtk.cpp:392 +#: ../LocalizedStringsGtk.cpp:411 msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ Zero width _non-joiner" -#: LocalizedStringsGtk.cpp:397 +#: ../LocalizedStringsGtk.cpp:416 msgid "No recent searches" msgstr "Inga tidigare sƶkningar" -#: LocalizedStringsGtk.cpp:402 +#: ../LocalizedStringsGtk.cpp:421 msgid "Recent searches" msgstr "Tidigare sƶkningar" -#: LocalizedStringsGtk.cpp:407 +#: ../LocalizedStringsGtk.cpp:426 msgid "_Clear recent searches" msgstr "_Tƶm tidigare sƶkningar" -#: LocalizedStringsGtk.cpp:412 +#: ../LocalizedStringsGtk.cpp:431 msgid "definition" msgstr "definition" -#: LocalizedStringsGtk.cpp:417 +#: ../LocalizedStringsGtk.cpp:436 +msgid "description list" +msgstr "beskrivningslista" + +#: ../LocalizedStringsGtk.cpp:441 msgid "term" msgstr "term" -#: LocalizedStringsGtk.cpp:422 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:446 msgid "description" -msgstr "definition" +msgstr "beskrivning" -#: LocalizedStringsGtk.cpp:427 +#: ../LocalizedStringsGtk.cpp:451 msgid "footer" -msgstr "" +msgstr "sidfot" -#: LocalizedStringsGtk.cpp:432 +#: ../LocalizedStringsGtk.cpp:456 +msgid "cancel" +msgstr "avbryt" + +#: ../LocalizedStringsGtk.cpp:461 msgid "press" msgstr "tryck" -#: LocalizedStringsGtk.cpp:437 +#: ../LocalizedStringsGtk.cpp:466 msgid "select" msgstr "vƤlj" -#: LocalizedStringsGtk.cpp:442 +#: ../LocalizedStringsGtk.cpp:471 msgid "activate" msgstr "aktivera" -#: LocalizedStringsGtk.cpp:447 +#: ../LocalizedStringsGtk.cpp:476 msgid "uncheck" msgstr "avmarkera" -#: LocalizedStringsGtk.cpp:452 +#: ../LocalizedStringsGtk.cpp:481 msgid "check" msgstr "markera" -#: LocalizedStringsGtk.cpp:457 +#: ../LocalizedStringsGtk.cpp:486 msgid "jump" msgstr "hoppa" -#: LocalizedStringsGtk.cpp:472 +#: ../LocalizedStringsGtk.cpp:506 msgid "Missing Plug-in" -msgstr "" +msgstr "Saknar insticksmodul" -#: LocalizedStringsGtk.cpp:478 +#: ../LocalizedStringsGtk.cpp:512 msgid "Plug-in Failure" -msgstr "" +msgstr "Insticksmodul misslyckades" -#: LocalizedStringsGtk.cpp:502 +#. FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number. +#: ../LocalizedStringsGtk.cpp:536 msgid " files" msgstr " filer" -#: LocalizedStringsGtk.cpp:507 +#: ../LocalizedStringsGtk.cpp:541 msgid "Unknown" msgstr "OkƤnt" -#: LocalizedStringsGtk.cpp:524 +#: ../LocalizedStringsGtk.cpp:546 +#, c-format +msgctxt "Title string for images" +msgid "%s (%dx%d pixels)" +msgstr "%s (%dx%d bildpunkter)" + +#: ../LocalizedStringsGtk.cpp:557 msgid "Loading..." -msgstr "" +msgstr "LƤser in..." -#: LocalizedStringsGtk.cpp:529 +#: ../LocalizedStringsGtk.cpp:562 msgid "Live Broadcast" -msgstr "" +msgstr "Live-sƤndning" -#: LocalizedStringsGtk.cpp:535 -msgid "audio element controller" -msgstr "" +#: ../LocalizedStringsGtk.cpp:568 +msgid "audio playback" +msgstr "ljuduppspelning" -#: LocalizedStringsGtk.cpp:537 -msgid "video element controller" -msgstr "" +#: ../LocalizedStringsGtk.cpp:570 +msgid "video playback" +msgstr "videouppspelning" -#: LocalizedStringsGtk.cpp:539 +#: ../LocalizedStringsGtk.cpp:572 msgid "mute" -msgstr "" +msgstr "dƤmpa" -#: LocalizedStringsGtk.cpp:541 +#: ../LocalizedStringsGtk.cpp:574 msgid "unmute" -msgstr "" +msgstr "dƤmpa ej" -#: LocalizedStringsGtk.cpp:543 +#: ../LocalizedStringsGtk.cpp:576 msgid "play" -msgstr "" +msgstr "spela" -#: LocalizedStringsGtk.cpp:545 +#: ../LocalizedStringsGtk.cpp:578 msgid "pause" -msgstr "" +msgstr "pausa" -#: LocalizedStringsGtk.cpp:547 +#: ../LocalizedStringsGtk.cpp:580 msgid "movie time" -msgstr "" +msgstr "filmtid" -#: LocalizedStringsGtk.cpp:549 +#: ../LocalizedStringsGtk.cpp:582 msgid "timeline slider thumb" -msgstr "" +msgstr "miniatyrbild fƶr tidslinjereglaget" -#: LocalizedStringsGtk.cpp:551 +#: ../LocalizedStringsGtk.cpp:584 msgid "back 30 seconds" -msgstr "" +msgstr "bakĆ„t 30 sekunder" -#: LocalizedStringsGtk.cpp:553 +#: ../LocalizedStringsGtk.cpp:586 msgid "return to realtime" -msgstr "" +msgstr "Ć„ter till realtid" -#: LocalizedStringsGtk.cpp:555 +#: ../LocalizedStringsGtk.cpp:588 msgid "elapsed time" -msgstr "" +msgstr "fƶrfluten tid" -#: LocalizedStringsGtk.cpp:557 +#: ../LocalizedStringsGtk.cpp:590 msgid "remaining time" -msgstr "" +msgstr "Ć„terstĆ„ende tid" -#: LocalizedStringsGtk.cpp:559 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:592 msgid "status" -msgstr "Status" +msgstr "status" -#: LocalizedStringsGtk.cpp:561 +#: ../LocalizedStringsGtk.cpp:594 msgid "enter fullscreen" -msgstr "" +msgstr "helskƤrmslƤge" -#: LocalizedStringsGtk.cpp:563 +#: ../LocalizedStringsGtk.cpp:596 msgid "exit fullscreen" -msgstr "" +msgstr "avsluta helskƤrmslƤge" -#: LocalizedStringsGtk.cpp:565 +#: ../LocalizedStringsGtk.cpp:598 msgid "fast forward" -msgstr "" +msgstr "spola framĆ„t" -#: LocalizedStringsGtk.cpp:567 +#: ../LocalizedStringsGtk.cpp:600 msgid "fast reverse" -msgstr "" +msgstr "spola bakĆ„t" -#: LocalizedStringsGtk.cpp:569 +#: ../LocalizedStringsGtk.cpp:602 msgid "show closed captions" -msgstr "" +msgstr "visa undertexter" -#: LocalizedStringsGtk.cpp:571 +#: ../LocalizedStringsGtk.cpp:604 msgid "hide closed captions" -msgstr "" +msgstr "dƶlj undertexter" -#: LocalizedStringsGtk.cpp:573 +#: ../LocalizedStringsGtk.cpp:606 msgid "media controls" -msgstr "" +msgstr "mediakontroller" -#: LocalizedStringsGtk.cpp:582 +#: ../LocalizedStringsGtk.cpp:615 msgid "audio element playback controls and status display" -msgstr "" +msgstr "uppspelningskontroller fƶr ljud och statusvisning" -#: LocalizedStringsGtk.cpp:584 +#: ../LocalizedStringsGtk.cpp:617 msgid "video element playback controls and status display" -msgstr "" +msgstr "uppspelningskontroller fƶr video och statusvisning" -#: LocalizedStringsGtk.cpp:586 +#: ../LocalizedStringsGtk.cpp:619 msgid "mute audio tracks" -msgstr "" +msgstr "dƤmpa ljudspĆ„r" -#: LocalizedStringsGtk.cpp:588 +#: ../LocalizedStringsGtk.cpp:621 msgid "unmute audio tracks" -msgstr "" +msgstr "dƤmpa ej ljudspĆ„r" -#: LocalizedStringsGtk.cpp:590 +#: ../LocalizedStringsGtk.cpp:623 msgid "begin playback" -msgstr "" +msgstr "pĆ„bƶrja uppspelning" -#: LocalizedStringsGtk.cpp:592 +#: ../LocalizedStringsGtk.cpp:625 msgid "pause playback" -msgstr "" +msgstr "pausa uppspelning" -#: LocalizedStringsGtk.cpp:594 +#: ../LocalizedStringsGtk.cpp:627 msgid "movie time scrubber" -msgstr "" +msgstr "filmtids-scrubber" -#: LocalizedStringsGtk.cpp:596 +#: ../LocalizedStringsGtk.cpp:629 msgid "movie time scrubber thumb" -msgstr "" +msgstr "filmtids-scrubber miniatyrbild" -#: LocalizedStringsGtk.cpp:598 +#: ../LocalizedStringsGtk.cpp:631 msgid "seek movie back 30 seconds" -msgstr "" +msgstr "sƶk bakĆ„t 30 sekunder i film" -#: LocalizedStringsGtk.cpp:600 +#: ../LocalizedStringsGtk.cpp:633 msgid "return streaming movie to real time" -msgstr "" +msgstr "Ć„tergĆ„ till realtid fƶr den strƶmmande filmen" -#: LocalizedStringsGtk.cpp:602 +#: ../LocalizedStringsGtk.cpp:635 msgid "current movie time in seconds" -msgstr "" +msgstr "aktuell filmtid i sekunder" -#: LocalizedStringsGtk.cpp:604 +#: ../LocalizedStringsGtk.cpp:637 msgid "number of seconds of movie remaining" -msgstr "" +msgstr "Ć„terstĆ„ende sekunder av filmen" -#: LocalizedStringsGtk.cpp:606 +#: ../LocalizedStringsGtk.cpp:639 msgid "current movie status" -msgstr "" +msgstr "aktuell filmstatus" -#: LocalizedStringsGtk.cpp:608 +#: ../LocalizedStringsGtk.cpp:641 msgid "seek quickly back" -msgstr "" +msgstr "snabbsƶk bakĆ„t" -#: LocalizedStringsGtk.cpp:610 +#: ../LocalizedStringsGtk.cpp:643 msgid "seek quickly forward" -msgstr "" +msgstr "snabbsƶk framĆ„t" -#: LocalizedStringsGtk.cpp:612 +#: ../LocalizedStringsGtk.cpp:645 msgid "Play movie in fullscreen mode" -msgstr "" +msgstr "Spela film i helskƤrmslƤge" -#: LocalizedStringsGtk.cpp:614 +#: ../LocalizedStringsGtk.cpp:647 msgid "Exit fullscreen mode" -msgstr "" +msgstr "Avsluta helskƤrmslƤge" -#: LocalizedStringsGtk.cpp:616 +#: ../LocalizedStringsGtk.cpp:649 msgid "start displaying closed captions" -msgstr "" +msgstr "visa undertexter" -#: LocalizedStringsGtk.cpp:618 +#: ../LocalizedStringsGtk.cpp:651 msgid "stop displaying closed captions" -msgstr "" +msgstr "visa inte undertexter" -#: LocalizedStringsGtk.cpp:627 -#, fuzzy +#: ../LocalizedStringsGtk.cpp:660 msgid "indefinite time" -msgstr "definition" +msgstr "obestƤmd tid" -#: LocalizedStringsGtk.cpp:657 +#: ../LocalizedStringsGtk.cpp:690 msgid "value missing" -msgstr "" +msgstr "vƤrde saknas" -#: LocalizedStringsGtk.cpp:693 +#: ../LocalizedStringsGtk.cpp:726 msgid "type mismatch" -msgstr "" +msgstr "typ ƶverensstƤmmer ej" -#: LocalizedStringsGtk.cpp:716 +#: ../LocalizedStringsGtk.cpp:749 msgid "pattern mismatch" -msgstr "" +msgstr "mƶnster ƶverensstƤmmer ej" -#: LocalizedStringsGtk.cpp:721 +#: ../LocalizedStringsGtk.cpp:754 msgid "too long" -msgstr "" +msgstr "fƶr lĆ„ng" -#: LocalizedStringsGtk.cpp:726 +#: ../LocalizedStringsGtk.cpp:759 msgid "range underflow" -msgstr "" +msgstr "intervallunderspill" -#: LocalizedStringsGtk.cpp:731 +#: ../LocalizedStringsGtk.cpp:764 msgid "range overflow" -msgstr "" +msgstr "intervallƶverspill" -#: LocalizedStringsGtk.cpp:736 +#: ../LocalizedStringsGtk.cpp:769 msgid "step mismatch" -msgstr "" +msgstr "steg ƶverensstƤmmer ej" -#: LocalizedStringsGtk.cpp:741 +#: ../LocalizedStringsGtk.cpp:774 msgid "Unacceptable TLS certificate" -msgstr "" - -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:328 -msgid "Play" -msgstr "" +msgstr "Oacceptabelt TLS-certifikat" -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:330 -msgid "Pause" -msgstr "" - -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:410 -msgid "Play / Pause" -msgstr "" - -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:410 -msgid "Play or pause the media" -msgstr "" +#: ../LocalizedStringsGtk.cpp:791 +msgctxt "Closed Captions" +msgid "Menu section heading for closed captions" +msgstr "Menyavsnittsrubrik fƶr undertexter" + +#: ../LocalizedStringsGtk.cpp:796 +msgctxt "Menu section heading for subtitles" +msgid "Subtitles" +msgstr "Undertexter" + +#: ../LocalizedStringsGtk.cpp:801 +msgctxt "" +"Menu item label for the track that represents disabling closed captions" +msgid "Off" +msgstr "Av" + +#: ../LocalizedStringsGtk.cpp:806 +msgctxt "Menu item label for the automatically choosen track" +msgid "Auto" +msgstr "Auto" + +#: ../LocalizedStringsGtk.cpp:811 +msgctxt "Menu item label for a closed captions track that has no other name" +msgid "No label" +msgstr "Ingen etikett" + +#: ../LocalizedStringsGtk.cpp:816 +msgctxt "Menu item label for an audio track that has no other name" +msgid "No label" +msgstr "Ingen etikett" + +#: ../LocalizedStringsGtk.cpp:822 +msgctxt "Snapshotted Plug-In" +msgid "Title of the label to show on a snapshotted plug-in" +msgstr "Titel pĆ„ etiketten att visa fƶr ƶgonblicksbilden av ett instick" + +#: ../LocalizedStringsGtk.cpp:827 +msgctxt "Click to restart" +msgid "Subtitle of the label to show on a snapshotted plug-in" +msgstr "Undertext fƶr etiketten att visa pĆ„ en ƶgonblicksbild fƶr ett instick" -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:416 -msgid "Time:" +#: ../../../../WebKit2/Shared/Downloads/soup/DownloadSoup.cpp:99 +#, c-format +msgid "" +"Cannot determine destination URI for download with suggested filename %s" msgstr "" +"Kan inte avgƶra URI fƶr mĆ„ldestination fƶr hƤmtning med fƶreslagna filnamnet " +"%s" -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:442 -msgid "Exit Fullscreen" -msgstr "" +#. Title of the HTTP authentication dialog. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:93 +msgid "Authentication Required" +msgstr "Autentisering krƤvs" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:104 +msgid "_Cancel" +msgstr "_Avbryt" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:110 +msgid "_Authenticate" +msgstr "_Autentisera" -#: ../graphics/gtk/FullscreenVideoControllerGtk.cpp:442 -msgid "Exit from fullscreen mode" -msgstr "" +#. Prompt on the HTTP authentication dialog. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:122 +#, c-format +msgid "Authentication required by %s:%i" +msgstr "Autentisering krƤvs av %s:%i" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:276 -msgid "Network Request" -msgstr "NƤtverksbegƤran" +#. Label on the HTTP authentication dialog. %s is a (probably English) message from the website. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:131 +#, c-format +msgid "The site says: ā€œ%sā€" +msgstr "Webbplatsen sƤger: ā€%sā€" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:277 -msgid "The network request for the URI that should be downloaded" -msgstr "NƤtverksbegƤran fƶr URI:n som ska hƤmtas" +#. Check button on the HTTP authentication dialog. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:138 +msgid "_Remember password" +msgstr "_Kom ihĆ„g lƶsenord" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:291 -#, fuzzy -msgid "Network Response" -msgstr "NƤtverksbegƤran" +#. Entry on the HTTP authentication dialog. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:147 +msgid "_Username" +msgstr "_AnvƤndarnamn" + +#. Entry on the HTTP authentication dialog. +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:159 +msgid "_Password" +msgstr "_Lƶsenord" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:292 -#, fuzzy -msgid "The network response for the URI that should be downloaded" -msgstr "NƤtverksbegƤran fƶr URI:n som ska hƤmtas" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:164 +msgid "Destination" +msgstr "Destination" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:306 -msgid "Destination URI" -msgstr "Destinations-URI" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:165 +msgid "The local URI to where the download will be saved" +msgstr "Lokalt URI dƤr hƤmtningar kommer att sparas" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:307 -msgid "The destination URI where to save the file" -msgstr "Destinations-URI dƤr sparning ska ske av filen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:177 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:123 +msgid "Response" +msgstr "Svar" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:321 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:150 -msgid "Suggested Filename" -msgstr "Fƶreslaget filnamn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:178 +msgid "The response of the download" +msgstr "Svaret fƶr hƤmtningen" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:322 -msgid "The filename suggested as default when saving" -msgstr "Fƶreslaget filnamn som standard vid sparning" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:339 -msgid "Progress" -msgstr "Fƶrlopp" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:195 +msgid "Estimated Progress" +msgstr "BerƤknat fƶrlopp" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:340 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:171 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:196 msgid "Determines the current progress of the download" msgstr "FaststƤller aktuellt fƶrlopp fƶr hƤmtningen" -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:353 -msgid "Status" -msgstr "Status" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:354 -msgid "Determines the current status of the download" -msgstr "FaststƤller aktuell status fƶr hƤmtningen" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:369 -msgid "Current Size" -msgstr "Aktuell storlek" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:370 -msgid "The length of the data already downloaded" -msgstr "LƤngden fƶr det data som redan hƤmtats" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:384 -msgid "Total Size" -msgstr "Total storlek" - -#: ../../../WebKit/gtk/webkit/webkitdownload.cpp:385 -msgid "The total size of the file" -msgstr "Totala storleken fƶr filen" - -#: ../../../WebKit/gtk/webkit/webkitfavicondatabase.cpp:144 -#: ../../../WebKit/gtk/webkit/webkitfavicondatabase.cpp:579 -msgid "Operation was cancelled" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:214 +msgid "Allow Overwrite" +msgstr "TillĆ„t ƶverskrivning" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:215 +msgid "Whether the destination may be overwritten" +msgstr "Huruvida destinationen kan skrivas ƶver" -#: ../../../WebKit/gtk/webkit/webkitfavicondatabase.cpp:253 -#: ../../../WebKit/gtk/webkit/webkiticondatabase.cpp:148 -msgid "Path" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:142 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:322 +#, c-format +msgid "Unknown favicon for page %s" +msgstr "OkƤnd favicon fƶr sidan %s" -#: ../../../WebKit/gtk/webkit/webkitfavicondatabase.cpp:254 -#: ../../../WebKit/gtk/webkit/webkiticondatabase.cpp:149 -#, fuzzy -msgid "The absolute path of the icon database folder" -msgstr "LƤngden fƶr det data som redan hƤmtats" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:148 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:278 +#, c-format +msgid "Page %s does not have a favicon" +msgstr "Sidan %s har ingen favicon" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:272 +msgid "Favicons database not initialized yet" +msgstr "Databasen fƶr favicons Ƥr inte initialiserad Ƥn" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:129 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:128 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:129 msgid "MIME types filter" -msgstr "" +msgstr "Filter fƶr MIME-typer" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:130 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:129 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:130 msgid "The filter currently associated with the request" -msgstr "" +msgstr "Det aktuella filtret associerat med begƤran" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:145 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:142 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:143 msgid "MIME types" -msgstr "" +msgstr "MIME-typer" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:146 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:143 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:144 msgid "The list of MIME types associated with the request" -msgstr "" +msgstr "Listan ƶver MIME-typer associerade med begƤran" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:161 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:157 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:158 msgid "Select multiple files" -msgstr "" +msgstr "VƤlj multipla filer" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:162 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:158 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:159 msgid "Whether the file chooser should allow selecting multiple files" -msgstr "" +msgstr "Huruvida filvƤljaren ska tillĆ„ta val av multipla filer" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:177 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:171 -#, fuzzy +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:172 msgid "Selected files" -msgstr " filer" +msgstr "Valda filer" -#: ../../../WebKit/gtk/webkit/webkitfilechooserrequest.cpp:178 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:172 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp:173 msgid "The list of selected files associated with the request" -msgstr "" +msgstr "Listan ƶver markerade filer associerade med begƤran" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:175 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:152 -msgid "Context" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:176 -msgid "Flags indicating the kind of target that received the event." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:190 +msgid "Search text" +msgstr "Sƶk text" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:190 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:166 -#, fuzzy -msgid "Link URI" -msgstr "Ursprunglig URI" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:191 +msgid "Text to search for in the view" +msgstr "Text att sƶka efter i vyn" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:191 -msgid "The URI to which the target that received the event points, if any." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:203 +msgid "Search Options" +msgstr "Sƶkalternativ" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:204 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:205 -msgid "Image URI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:204 +msgid "Search options to be used in the search operation" +msgstr "Sƶkalternativ att anvƤnda vid sƶkning" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:205 -msgid "" -"The URI of the image that is part of the target that received the event, if " -"any." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:217 +msgid "Maximum matches count" +msgstr "Hƶgsta antal trƤffar" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:218 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:218 -msgid "Media URI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:218 +msgid "The maximum number of matches in a given text to report" +msgstr "Hƶgsta antalet trƤffar att rapportera i en text" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:219 -msgid "" -"The URI of the media that is part of the target that received the event, if " -"any." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:230 +msgid "WebView" +msgstr "WebView" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:240 -msgid "Inner node" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:231 +msgid "The WebView associated with this find controller" +msgstr "WebView associerad med denna sƶkkontroll" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:241 -msgid "The inner DOM node associated with the hit test result." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:152 +msgid "Context" +msgstr "Kontext" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:254 -msgid "X coordinate" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:153 +msgid "Flags with the context of the WebKitHitTestResult" +msgstr "Flaggor med kontexten fƶr WebKitHitTestResult" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:255 -msgid "The x coordinate of the event relative to the view's window." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:166 +msgid "Link URI" +msgstr "LƤnk-URI" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:268 -msgid "Y coordinate" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:167 +msgid "The link URI" +msgstr "LƤnk-URI:n" -#: ../../../WebKit/gtk/webkit/webkithittestresult.cpp:269 -msgid "The y coordinate of the event relative to the view's window." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:179 +msgid "Link Title" +msgstr "LƤnktitel" -#: ../../../WebKit/gtk/webkit/webkitnetworkrequest.cpp:134 -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:143 -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:466 -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:176 -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:209 -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3238 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:93 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:99 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:109 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:635 -msgid "URI" -msgstr "URI" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:180 +msgid "The link title" +msgstr "LƤnktitel" -#: ../../../WebKit/gtk/webkit/webkitnetworkrequest.cpp:135 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:94 -msgid "The URI to which the request will be made." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:192 +msgid "Link Label" +msgstr "LƤnketikett" -#: ../../../WebKit/gtk/webkit/webkitnetworkrequest.cpp:148 -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:157 -msgid "Message" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:193 +msgid "The link label" +msgstr "LƤnketiketten" -#: ../../../WebKit/gtk/webkit/webkitnetworkrequest.cpp:149 -msgid "The SoupMessage that backs the request." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:205 +msgid "Image URI" +msgstr "Bild-URI" -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:144 -msgid "The URI to which the response will be made." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:206 +msgid "The image URI" +msgstr "Bild-URI:n" -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:158 -msgid "The SoupMessage that backs the response." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:218 +msgid "Media URI" +msgstr "Media-URI" -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:171 -#, fuzzy -msgid "Suggested filename" -msgstr "Fƶreslaget filnamn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:219 +msgid "The media URI" +msgstr "Media-URI:n" -#: ../../../WebKit/gtk/webkit/webkitnetworkresponse.cpp:172 -#, fuzzy -msgid "The suggested filename for the response." -msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:113 +msgid "Navigation action" +msgstr "NavigeringsĆ„tgƤrd" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:150 -msgid "Protocol" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:114 +msgid "The WebKitNavigationAction triggering this decision" +msgstr "WebKitNavigationAction som triggar detta val" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:151 -msgid "The protocol of the security origin" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:130 +msgid "Navigation type" +msgstr "Navigeringstyp" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:164 -msgid "Host" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:131 +msgid "The type of navigation triggering this decision" +msgstr "Typ av navigering som triggar detta val" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:165 -#, fuzzy -msgid "The host of the security origin" -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:150 +msgid "Mouse button" +msgstr "Musknapp" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:178 -msgid "Port" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:151 +msgid "The mouse button used if this decision was triggered by a mouse event" +msgstr "Musknappen som anvƤndes om detta val triggades av en mushƤndelse" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:179 -#, fuzzy -msgid "The port of the security origin" -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:169 +msgid "Mouse event modifiers" +msgstr "Modifierare fƶr mushƤndelser" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:192 -msgid "Web Database Usage" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:170 +msgid "The modifiers active if this decision was triggered by a mouse event" +msgstr "De aktiva modifierarna om detta beslut triggades av en mushƤndelse" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:193 -msgid "The cumulative size of all web databases in the security origin" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:185 +msgid "Navigation URI request" +msgstr "Navigations-URI begƤran" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:205 -msgid "Web Database Quota" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:186 +msgid "The URI request that is associated with this navigation" +msgstr "URI:n som Ƥr associerad med navigering" -#: ../../../WebKit/gtk/webkit/webkitsecurityorigin.cpp:206 -msgid "The web database quota of the security origin in bytes" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:201 +msgid "Frame name" +msgstr "Bildrutenamn" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:138 -msgid "Device Width" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:202 +msgid "The name of the new frame this navigation action targets" +msgstr "Namnet pĆ„ den nya ram denna navigeringsĆ„tgƤrd har som mĆ„l" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:139 -#, fuzzy -msgid "The width of the screen." -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:146 +msgid "Web View" +msgstr "Webbvy" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:160 -msgid "Device Height" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:147 +msgid "The web view that will be printed" +msgstr "Webbvyn som kommer att skrivas ut" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:161 -#, fuzzy -msgid "The height of the screen." -msgstr "Namnet pĆ„ ramen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:159 +msgid "Print Settings" +msgstr "UtskriftsinstƤllningar" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:184 -msgid "Available Width" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:160 +msgid "The initial print settings for the print operation" +msgstr "Initiala utskriftsinstƤllningarna fƶr utskrift" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:185 -#, fuzzy -msgid "The width of the visible area." -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:171 +msgid "Page Setup" +msgstr "SidinstƤllning" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:208 -msgid "Available Height" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:172 +msgid "The initial page setup for the print operation" +msgstr "Initiala sidinstƤllningen fƶr utskriftsĆ„tgƤrden" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:209 -#, fuzzy -msgid "The height of the visible area." -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:91 +msgid "Response URI request" +msgstr "Svars-URI-begƤran" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:230 -msgid "Desktop Width" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:92 +msgid "The URI request that is associated with this policy decision" +msgstr "URI-begƤran associerad med detta policybeslut" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:231 -msgid "" -"The width of viewport that works well for most web pages designed for " -"desktop." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:105 +msgid "URI response" +msgstr "URI-svar" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:253 -msgid "Device DPI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:106 +msgid "The URI response that is associated with this policy decision" +msgstr "URI-svar associerat med detta policybeslut" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:254 -msgid "The number of dots per inch of the screen." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:497 +msgid "Enable JavaScript" +msgstr "Aktivera JavaScript" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:272 -msgid "Width" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:498 +msgid "Enable JavaScript." +msgstr "Aktivera JavaScript." -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:273 -#, fuzzy -msgid "The width of the viewport." -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:512 +msgid "Auto load images" +msgstr "LƤs automatiskt in bilder" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:291 -msgid "Height" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:513 +msgid "Load images automatically." +msgstr "LƤs in bilder automatiskt." -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:292 -#, fuzzy -msgid "The height of the viewport." -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:526 +msgid "Load icons ignoring image load setting" +msgstr "LƤs in ikoner ignorerandes instƤllningar fƶr bildinlƤsning" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:310 -msgid "Initial Scale Factor" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:527 +msgid "Whether to load site icons ignoring image load setting." msgstr "" +"Huruvida webbplatsikoner ska lƤsas in och ignorera instƤllningar fƶr " +"bildinlƤsning." -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:311 -#, fuzzy -msgid "The initial scale of the viewport." -msgstr "Totala storleken fƶr filen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:544 +msgid "Enable offline web application cache" +msgstr "Aktivera frĆ„nkopplad cache fƶr webbapplikationer" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:329 -#, fuzzy -msgid "Minimum Scale Factor" -msgstr "Logisk minimumstorlek fƶr typsnitt" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:545 +msgid "Whether to enable offline web application cache." +msgstr "Huruvida frĆ„nkopplad webbapplikationscache ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:330 -#, fuzzy -msgid "The minimum scale of the viewport." -msgstr "Titeln fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:348 -msgid "Maximum Scale Factor" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:349 -#, fuzzy -msgid "The maximum scale of the viewport." -msgstr "Titeln fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:367 -msgid "Device Pixel Ratio" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:368 -msgid "The device pixel ratio of the viewport." -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:386 -msgid "user-scalable" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:387 -msgid "User Scalable" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:388 -msgid "Determines whether or not the user can zoom in and out." -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:405 -msgid "valid" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:406 -msgid "Valid" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:561 +msgid "Enable HTML5 local storage" +msgstr "Aktivera HTML5 lokal lagring" -#: ../../../WebKit/gtk/webkit/webkitviewportattributes.cpp:407 -msgid "Determines whether or not the attributes are valid, and can be used." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:562 +msgid "Whether to enable HTML5 Local Storage support." +msgstr "Huruvida stƶd fƶr HTML5 lokal lagring ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:176 -msgid "Security Origin" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:579 +msgid "Enable HTML5 database" +msgstr "Aktivera HTML5 databas" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:177 -#, fuzzy -msgid "The security origin of the database" -msgstr "Anpassad kodning fƶr webbvyn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:580 +msgid "Whether to enable HTML5 database support." +msgstr "Huruvida HTML5 databasstƶd ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:190 -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:452 -msgid "Name" -msgstr "Namn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:593 +msgid "Enable XSS auditor" +msgstr "Aktivera XSS-auditor" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:191 -#, fuzzy -msgid "The name of the Web Database database" -msgstr "Namnet pĆ„ ramen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:594 +msgid "Whether to enable the XSS auditor." +msgstr "Huruvida XSS-auditor ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:204 -msgid "Display Name" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:609 +msgid "Enable frame flattening" +msgstr "Aktivera frame flattening" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:205 -msgid "The display name of the Web Storage database" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:610 +msgid "Whether to enable frame flattening." +msgstr "Huruvida frame flattening ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:218 -msgid "Expected Size" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:622 +msgid "Enable plugins" +msgstr "Aktivera insticksmoduler" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:219 -msgid "The expected size of the Web Database database" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:623 +msgid "Enable embedded plugin objects." +msgstr "Aktivera inbƤddade insticksobjekt." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:231 -msgid "Size" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:635 +msgid "Enable Java" +msgstr "Aktivera Java" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:232 -msgid "The current size of the Web Database database" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:636 +msgid "Whether Java support should be enabled." +msgstr "Huruvida stƶd fƶr Java ska aktiveras." -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:244 -#, fuzzy -msgid "Filename" -msgstr "Fƶreslaget filnamn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:649 +msgid "JavaScript can open windows automatically" +msgstr "JavaScript kan ƶppna fƶnster automatiskt" -#: ../../../WebKit/gtk/webkit/webkitwebdatabase.cpp:245 -msgid "The absolute filename of the Web Storage database" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:650 +msgid "Whether JavaScript can open windows automatically." +msgstr "Huruvida JavaScript kan ƶppna fƶnster automatiskt." -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:453 -msgid "The name of the frame" -msgstr "Namnet pĆ„ ramen" - -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:459 -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:144 -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3224 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:591 -msgid "Title" -msgstr "Titel" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:665 +msgid "Enable hyperlink auditing" +msgstr "Aktivera hyperlink auditing" -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:460 -msgid "The document title of the frame" -msgstr "Dokumenttiteln fƶr ramen" - -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:467 -msgid "The current URI of the contents displayed by the frame" -msgstr "Aktuella URI:n fƶr innehĆ„llet som visas av ramen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:666 +msgid "Whether should be able to send pings." +msgstr "Huruvida ska kunna sƤnda ping." -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:498 -msgid "Horizontal Scrollbar Policy" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:678 +msgid "Default font family" +msgstr "Standardfamilj fƶr teckensnitt" -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:499 -#, fuzzy +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:679 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:516 -msgid "Vertical Scrollbar Policy" +"The font family to use as the default for content that does not specify a " +"font." msgstr "" +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som inte " +"specificerar ett teckensnitt." -#: ../../../WebKit/gtk/webkit/webkitwebframe.cpp:517 -#, 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:145 -msgid "The title of the history item" -msgstr "Titeln fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:160 -msgid "Alternate Title" -msgstr "Alternativ titel" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:161 -msgid "The alternate title of the history item" -msgstr "Alternativ titel fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:177 -msgid "The URI of the history item" -msgstr "URI:n fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:192 -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:163 -msgid "Original URI" -msgstr "Ursprunglig URI" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:193 -msgid "The original URI of the history item" -msgstr "Ursprungliga URI:n fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:208 -msgid "Last visited Time" -msgstr "Senast besƶkt" - -#: ../../../WebKit/gtk/webkit/webkitwebhistoryitem.cpp:209 -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:273 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:154 -msgid "Web View" -msgstr "Webbvy" - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:274 -msgid "The Web View that renders the Web Inspector itself" -msgstr "Webbvyn som renderar sjƤlva Webbinspektƶren" - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:287 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:122 -msgid "Inspected URI" -msgstr "Inspekterad URI" - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:288 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:123 -msgid "The URI that is currently being inspected" -msgstr "URI:n som fƶr nƤrvarande inspekteras" - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:304 -msgid "Enable JavaScript profiling" -msgstr "Aktivera JavaScript-profilering" - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:305 -msgid "Profile the executed JavaScript." -msgstr "Profilera det kƶrda JavaScript." - -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:320 -#, fuzzy -msgid "Enable Timeline profiling" -msgstr "Aktivera JavaScript-profilering" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:692 +msgid "Monospace font family" +msgstr "Teckensnittsfamiljen monospace" -#: ../../../WebKit/gtk/webkit/webkitwebinspector.cpp:321 -msgid "Profile the WebCore instrumentation." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:693 +msgid "The font family used as the default for content using monospace font." msgstr "" +"Standardfamiljen fƶr teckensnitt som anvƤnds fƶr innehĆ„ll med monospace-" +"teckensnitt." -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:148 -msgid "Reason" -msgstr "Anledning" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:149 -msgid "The reason why this navigation is occurring" -msgstr "Anledningen varfƶr denna navigering sker" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:164 -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:178 -msgid "Button" -msgstr "Knapp" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:179 -msgid "The button used to click" -msgstr "Knappen som anvƤndes fƶr att klicka" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:194 -msgid "Modifier state" -msgstr "ModifierartillstĆ„nd" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:195 -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:210 -#, fuzzy -msgid "Target frame" -msgstr "Namnet pĆ„ ramen" - -#: ../../../WebKit/gtk/webkit/webkitwebnavigationaction.cpp:211 -#, fuzzy -msgid "The target frame for the navigation" -msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" - -#: ../../../WebKit/gtk/webkit/webkitwebplugin.cpp:115 -#, fuzzy -msgid "Enabled" -msgstr "Redigeringsbar" - -#: ../../../WebKit/gtk/webkit/webkitwebplugin.cpp:116 -#, fuzzy -msgid "Whether the plugin is enabled" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." - -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:210 -#, fuzzy -msgid "The URI of the resource" -msgstr "URI:n fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:705 +msgid "Serif font family" +msgstr "Teckensnittsfamiljen serif" -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:224 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:137 -msgid "MIME Type" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:706 +msgid "The font family used as the default for content using serif font." msgstr "" +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som anvƤnder serif." -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:225 -#, fuzzy -msgid "The MIME type of the resource" -msgstr "Titeln fƶr historikobjektet" - -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:239 -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3373 -msgid "Encoding" -msgstr "Teckenkodning" - -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:240 -#, fuzzy -msgid "The text encoding name of the resource" -msgstr "Standardkodning fƶr webbvyn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:718 +msgid "Sans-serif font family" +msgstr "Teckensnittsfamiljen sans-serif" -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:255 -msgid "Frame Name" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:719 +msgid "The font family used as the default for content using sans-serif font." msgstr "" +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som anvƤnder sans-" +"serif." -#: ../../../WebKit/gtk/webkit/webkitwebresource.cpp:256 -#, fuzzy -msgid "The frame name of the resource" -msgstr "Namnet pĆ„ ramen" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:150 -msgid "Default Encoding" -msgstr "Standardteckenkodning" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:151 -msgid "The default encoding used to display text." -msgstr "Standardkodningen som anvƤnds fƶr att visa text." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:159 -msgid "Cursive Font Family" -msgstr "Typsnittsfamiljen Cursive" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:160 -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:168 -msgid "Default Font Family" -msgstr "Standardfamilj fƶr typsnitt" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:169 -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:177 -msgid "Fantasy Font Family" -msgstr "Typsnittsfamiljen Fantasy" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:731 +msgid "Cursive font family" +msgstr "Teckensnittsfamiljen kursiv" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:178 -msgid "The default Fantasy font family used to display text." -msgstr "Standardfamiljen fƶr Fantasy-typsnitt som anvƤnds fƶr att visa text." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:732 +msgid "The font family used as the default for content using cursive font." +msgstr "" +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som anvƤnder " +"kursivt teckensnitt." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:186 -msgid "Monospace Font Family" -msgstr "Typsnittsfamiljen Monospace" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:744 +msgid "Fantasy font family" +msgstr "Teckensnittsfamiljen fantasy" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:187 -msgid "The default font family used to display monospace text." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:745 +msgid "The font family used as the default for content using fantasy font." msgstr "" -"Standardfamiljen fƶr typsnitt som anvƤnds fƶr att visa text med fast " -"breddsteg." +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som anvƤnder " +"fantasy-teckensnitt." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:195 -msgid "Sans Serif Font Family" -msgstr "Typsnittsfamiljen Sans Serif" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:757 +msgid "Pictograph font family" +msgstr "Teckensnittsfamilj fƶr Pictograph" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:196 -msgid "The default Sans Serif font family used to display text." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:758 +msgid "The font family used as the default for content using pictograph font." msgstr "" -"Standardfamiljen fƶr Sans Serif-typsnitt som anvƤnds fƶr att visa text." +"Teckensnittsfamilj att anvƤnda som standard fƶr innehĆ„ll som anvƤnder " +"pictograph-teckensnitt." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:204 -msgid "Serif Font Family" -msgstr "Typsnittsfamiljen Serif" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:205 -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:213 -msgid "Default Font Size" -msgstr "Standardstorlek fƶr typsnitt" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:771 +msgid "Default font size" +msgstr "Standardstorlek fƶr teckensnitt" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:214 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:717 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:772 msgid "The default font size used to display text." -msgstr "Standardstorleken fƶr typsnitt som anvƤnds fƶr att visa text." +msgstr "Standardstorleken fƶr teckensnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:222 -msgid "Default Monospace Font Size" -msgstr "Standardstorlek fƶr Monospace-typsnitt" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:785 +msgid "Default monospace font size" +msgstr "Standardstorlek fƶr monospace-teckensnitt" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:223 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:731 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:786 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 " +"Standardstorleken fƶr teckensnitt som anvƤnds fƶr att visa text med fast " "breddsteg." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:231 -msgid "Minimum Font Size" -msgstr "Minimumstorlek fƶr typsnitt" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:800 +msgid "Minimum font size" +msgstr "Minimumstorlek fƶr teckensnitt" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:232 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:746 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:801 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:240 -msgid "Minimum Logical Font Size" -msgstr "Logisk minimumstorlek fƶr typsnitt" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:241 -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:260 -msgid "Enforce 96 DPI" -msgstr "Tvinga 96 punkter/tum" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:261 -msgid "Enforce a resolution of 96 DPI" -msgstr "Tvinga en upplƶsning pĆ„ 96 punkter/tum" +msgstr "Minimumstorlek fƶr teckensnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:269 -msgid "Auto Load Images" -msgstr "LƤs automatiskt in bilder" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:270 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:458 -msgid "Load images automatically." -msgstr "LƤs in bilder automatiskt." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:278 -msgid "Auto Shrink Images" -msgstr "Minska bilder automatiskt" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:279 -msgid "Automatically shrink standalone images to fit." -msgstr "Minska automatiskt fristĆ„ende bilder till att passa." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:287 -msgid "Respect Image Orientation" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:813 +msgid "Default charset" +msgstr "StandardteckenuppsƤttning" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:288 -msgid "Whether WebKit should respect image orientation." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:814 +msgid "" +"The default text charset used when interpreting content with unspecified " +"charset." msgstr "" +"StandardteckenuppsƤttningen att anvƤnda vid tolkning av innehĆ„ll med " +"ospecificerad teckenuppsƤttning." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:296 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:870 -msgid "Print Backgrounds" -msgstr "Skriv ut bakgrunder" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:297 -msgid "Whether background images should be printed." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:305 -msgid "Enable Scripts" -msgstr "Aktivera skript" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:306 -msgid "Enable embedded scripting languages." -msgstr "Aktivera inbƤddade skriptsprĆ„k." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:314 -msgid "Enable Plugins" -msgstr "Aktivera insticksmoduler" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:315 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:568 -msgid "Enable embedded plugin objects." -msgstr "Aktivera inbƤddade insticksobjekt." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:827 +msgid "Enable private browsing" +msgstr "Aktivera privat surfning" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:323 -msgid "Resizable Text Areas" -msgstr "StorleksƤndringsbara textomrĆ„den " - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:324 -msgid "Whether text areas are resizable." -msgstr "Huruvida textomrĆ„den kan storleksƤndras." - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:331 -msgid "User Stylesheet URI" -msgstr "URI fƶr anvƤndarstilmall" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:332 -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:347 -msgid "Zoom Stepping Value" -msgstr "StegvƤrde fƶr zoom" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:348 -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." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:828 +msgid "Whether to enable private browsing" +msgstr "Huruvida privat surfning ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:366 -msgid "Enable Developer Extras" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:840 +msgid "Enable developer extras" msgstr "Aktivera extrafunktioner fƶr utvecklare" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:367 -msgid "Enables special extensions that help developers" -msgstr "Aktiverar speciella tillƤgg som hjƤlper utvecklarna" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:841 +msgid "Whether to enable developer extras" +msgstr "Huruvida extrafunktioner fƶr utvecklare ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:387 -msgid "Enable Private Browsing" -msgstr "Aktivera privat surfning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:853 +msgid "Enable resizable text areas" +msgstr "Aktivera storleksƤndringsbara textomrĆ„den" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:388 -msgid "Enables private browsing mode" -msgstr "Aktiverar lƤget fƶr privat surfning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:854 +msgid "Whether to enable resizable text areas" +msgstr "Huruvida storleksƤndringsbara textomrĆ„den ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:403 -msgid "Enable Spell Checking" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:869 +msgid "Enable tabs to links" +msgstr "Aktivera flikar till lƤnkar" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:404 -#, fuzzy -msgid "Enables spell checking while typing" -msgstr "Kontrollera stavning vid _inmatning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:870 +msgid "Whether to enable tabs to links" +msgstr "Huruvida flikar till lƤnkar ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:427 -msgid "Languages to use for spell checking" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:883 +msgid "Enable DNS prefetching" +msgstr "Aktivera DNS-fƶrhƤmtning" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:428 -msgid "Comma separated list of languages to use for spell checking" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:884 +msgid "Whether to enable DNS prefetching" +msgstr "Huruvida DNS-fƶrhƤmtning ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:442 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:841 -#, fuzzy +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:896 msgid "Enable Caret Browsing" -msgstr "Aktivera privat surfning" +msgstr "Aktivera textmarkƶrlƤge" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:443 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:842 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:897 msgid "Whether to enable accessibility enhanced keyboard navigation" msgstr "" +"Huruvida hjƤlpmedel fƶr fƶrbƤttrad tangentbordsnavigation ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:458 -msgid "Enable HTML5 Database" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:459 -msgid "Whether to enable HTML5 database support" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:474 -msgid "Enable HTML5 Local Storage" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:475 -msgid "Whether to enable HTML5 Local Storage support" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:490 -msgid "Local Storage Database Path" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:912 +msgid "Enable Fullscreen" +msgstr "Aktivera helskƤrm" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:491 -msgid "The path to where HTML5 Local Storage databases are stored." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:913 +msgid "Whether to enable the Javascript Fullscreen API" +msgstr "Huruvida Javascript Fullscreen API ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:505 -#, fuzzy -msgid "Enable XSS Auditor" -msgstr "Aktivera skript" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:925 +msgid "Print Backgrounds" +msgstr "Skriv ut bakgrunder" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:506 -#, fuzzy -msgid "Whether to enable the XSS auditor" -msgstr "Aktivera skript" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:926 +msgid "Whether background images should be drawn during printing" +msgstr "Huruvida bakgrundsbilder ska ritas ut under utskrift" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:524 -msgid "Enable Spatial Navigation" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:944 +msgid "Enable WebAudio" +msgstr "Aktivera WebAudio" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:525 -msgid "Whether to enable Spatial Navigation" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:945 +msgid "Whether WebAudio content should be handled" +msgstr "Huruvida WebAudio-innehĆ„ll ska hanteras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:543 -#, fuzzy -msgid "Enable Frame Flattening" -msgstr "Aktivera privat surfning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:959 +msgid "Enable WebGL" +msgstr "Aktivera WebGL" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:544 -msgid "Whether to enable Frame Flattening" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:960 +msgid "Whether WebGL content should be rendered" +msgstr "Huruvida WebGL-innehĆ„ll ska renderas" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:561 -msgid "User Agent" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:977 +msgid "Allow modal dialogs" +msgstr "TillĆ„t modala dialoger" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:562 -msgid "The User-Agent string used by WebKitGtk" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:978 +msgid "Whether it is possible to create modal dialogs" +msgstr "Huruvida det Ƥr mƶjligt att skapa modala dialoger" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:577 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:594 -msgid "JavaScript can open windows automatically" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:993 +msgid "Zoom Text Only" +msgstr "Zooma endast text" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:578 -msgid "Whether JavaScript can open windows automatically" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:994 +msgid "Whether zoom level of web view changes only the text size" +msgstr "Huruvida zoomnivĆ„n ƶver webbvyn endast Ƥndrar textstorlek" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:592 -msgid "JavaScript can access Clipboard" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1008 +msgid "JavaScript can access clipboard" +msgstr "JavaScript kan komma Ć„t urklipp" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:593 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:954 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1009 msgid "Whether JavaScript can access Clipboard" -msgstr "" +msgstr "Huruvida JavaScript kan komma Ć„t urklipp" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:609 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:489 -msgid "Enable offline web application cache" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:610 -msgid "Whether to enable offline web application cache" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:635 -msgid "Editing behavior" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:636 -msgid "The behavior mode to use in editing mode" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:652 -msgid "Enable universal access from file URIs" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:653 -msgid "Whether to allow universal access from file URIs" -msgstr "" - -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:668 -#, fuzzy -msgid "Enable DOM paste" -msgstr "Aktivera skript" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1025 +msgid "Media playback requires user gesture" +msgstr "Mediauppspelning krƤver anvƤndargest" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:669 -msgid "Whether to enable DOM paste" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1026 +msgid "Whether media playback requires user gesture" +msgstr "Huruvida mediauppspelning krƤver en anvƤndargest" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:687 -msgid "Tab key cycles through elements" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1040 +msgid "Media playback allows inline" +msgstr "Mediauppspelning tillĆ„ter inline" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:688 -msgid "Whether the tab key cycles through elements on the page." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1041 +msgid "Whether media playback allows inline" +msgstr "Huruvida mediauppspelning tillĆ„ter inline" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:710 -msgid "Enable Default Context Menu" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1055 +msgid "Draw compositing indicators" +msgstr "Rita ut kompositionsindikatorer" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:711 -msgid "" -"Enables the handling of right-clicks for the creation of the default context " -"menu" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1056 +msgid "Whether to draw compositing borders and repaint counters" +msgstr "Huruvida utritning av kompositionsramar och omritning av rƤknare ska ske" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:731 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1018 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1075 msgid "Enable Site Specific Quirks" -msgstr "" +msgstr "Aktivera webbplatsspecifika speciallƶsningar" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:732 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1019 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1076 msgid "Enables the site-specific compatibility workarounds" -msgstr "" +msgstr "Aktiverar webbplatsspecifika speciallƶsningar fƶr kompatibilitet" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:754 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1039 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1096 msgid "Enable page cache" -msgstr "" +msgstr "Aktivera sidcache" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:755 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1040 -#, fuzzy +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1097 msgid "Whether the page cache should be used" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +msgstr "Huruvida sidcachen ska anvƤndas" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:775 -msgid "Auto Resize Window" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1116 +msgid "User agent string" +msgstr "StrƤng fƶr anvƤndaragent" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:776 -msgid "Automatically resize the toplevel window when a page requests it" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1117 +msgid "The user agent string" +msgstr "StrƤngen fƶr anvƤndaragenten" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:808 -#, fuzzy -msgid "Enable Java Applet" -msgstr "Aktivera JavaScript-profilering" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1129 +msgid "Enable smooth scrolling" +msgstr "Aktivera mjuk rullning" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:809 -msgid "Whether Java Applet support through should be enabled" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1130 +msgid "Whether to enable smooth scrolling" +msgstr "Huruvida mjuk rullning ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:823 -#, fuzzy -msgid "Enable Hyperlink Auditing" -msgstr "Aktivera JavaScript-profilering" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1147 +msgid "Enable accelerated 2D canvas" +msgstr "Aktivera accelererad 2D-canvas" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:824 -#, fuzzy -msgid "Whether should be able to send pings" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1148 +msgid "Whether to enable accelerated 2D canvas" +msgstr "Huruvida accelererad 2D-canvas ska aktiveras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:832 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:857 -msgid "Enable Fullscreen" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1163 +msgid "Write console messages on stdout" +msgstr "Skriv ut konsolmeddelanden till stdout" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:833 -#, fuzzy -msgid "Whether the Mozilla style API should be enabled." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1164 +msgid "Whether to write console messages on stdout" +msgstr "Huruvida konsolmeddelanden ska skrivas till stdout" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:848 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:904 -msgid "Enable WebGL" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1182 +msgid "Enable MediaStream" +msgstr "Aktivera MediaStream" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:849 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:905 -#, fuzzy -msgid "Whether WebGL content should be rendered" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1183 +msgid "Whether MediaStream content should be handled" +msgstr "Huruvida MediaStream-innehĆ„ll ska hanteras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:865 -#, fuzzy -msgid "Enable accelerated compositing" -msgstr "Aktivera privat surfning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1202 +msgid "Enable Spatial Navigation" +msgstr "Aktivera spatial navigation" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:866 -#, fuzzy -msgid "Whether accelerated compositing should be enabled" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1203 +msgid "Whether to enable Spatial Navigation support." +msgstr "Huruvida stƶd fƶr spatial navigation ska aktiveras." + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1222 +msgid "Enable MediaSource" +msgstr "Aktivera MediaSource" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1223 +msgid "Whether MediaSource should be enabled." +msgstr "Huruvida MediaSource ska aktiveras." + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1241 +msgid "Allow file access from file URLs" +msgstr "TillĆ„t filĆ„tkomst frĆ„n fil-URL:ar" + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1242 +msgid "Whether file access is allowed from file URLs." +msgstr "Huruvida filĆ„tkomst tillĆ„ts frĆ„n fil-URL:ar." + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:95 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:105 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:110 +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:912 +msgid "URI" +msgstr "URI" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:884 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:889 -#, fuzzy -msgid "Enable WebAudio" -msgstr "Aktivera skript" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp:96 +msgid "The URI to which the request will be made." +msgstr "Den URI som till vilken begƤran ska ske." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:885 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:890 -#, fuzzy -msgid "Whether WebAudio content should be handled" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:106 +msgid "The URI for which the response was made." +msgstr "URI:n fƶr vilken begƤran skedde." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:901 -msgid "WebKit prefetches domain names" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:117 +msgid "Status Code" +msgstr "Statuskod" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:902 -msgid "Whether WebKit prefetches domain names" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:118 +msgid "The status code of the response as returned by the server." +msgstr "Statuskoden fƶr svaret som det returneras frĆ„n servern." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:920 -#, fuzzy -msgid "Enable Media Stream" -msgstr "Aktivera skript" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:130 +msgid "Content Length" +msgstr "InnehĆ„llslƤngd" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:921 -#, fuzzy -msgid "Whether Media Stream should be enabled" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:131 +msgid "The expected content length of the response." +msgstr "FƶrvƤntad innehĆ„llslƤngd fƶr svaret." -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:936 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1072 -#, fuzzy -msgid "Enable smooth scrolling" -msgstr "Aktivera privat surfning" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:143 +msgid "MIME Type" +msgstr "MIME-typ" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:937 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1073 -msgid "Whether to enable smooth scrolling" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:144 +msgid "The MIME type of the response" +msgstr "MIME-typen fƶr svaret" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:955 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:970 -msgid "Media playback requires user gesture" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:156 +msgid "Suggested Filename" +msgstr "Fƶreslaget filnamn" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:956 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:971 -msgid "Whether media playback requires user gesture" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:157 +msgid "The suggested filename for the URI response" +msgstr "Fƶreslaget filnamn fƶr URI-svaret" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:972 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:985 -msgid "Media playback allows inline" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:173 +msgid "HTTP Headers" +msgstr "HTTP-headers" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:973 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:986 -msgid "Whether media playback allows inline" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:174 +msgid "The The HTTP headers of the response" +msgstr "HTTP-headers fƶr svaret" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:1007 -msgid "Enable display of insecure content" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:127 +msgid "Inspected URI" +msgstr "Inspekterad URI" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:1008 -msgid "Whether non-HTTPS resources can display on HTTPS pages." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:128 +msgid "The URI that is currently being inspected" +msgstr "URI:n som fƶr nƤrvarande inspekteras" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:1023 -msgid "Enable running of insecure content" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:139 +msgid "Attached Height" +msgstr "FƤsthƶjd" -#: ../../../WebKit/gtk/webkit/webkitwebsettings.cpp:1024 -msgid "Whether non-HTTPS resources can run on HTTPS pages." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:140 +msgid "The height that the inspector view should have when it is attached" +msgstr "Hƶjden inspektƶren ska ha nƤr den Ƥr fƤst" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:1314 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:425 -msgid "Select Files" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:157 +msgid "Can Attach" +msgstr "Kan fƤsta" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:1314 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:425 -msgid "Select File" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:158 +msgid "" +"Whether the inspector can be attached to the same window that contains the " +"inspected view" msgstr "" +"Huruvida inspektƶren kan fƤstas vid samma fƶnster som innehĆ„ller den " +"inspekterade vyn" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3225 -msgid "Returns the @web_view's document title" -msgstr "Returnerar dokumenttiteln fƶr @web_view" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3239 -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:3252 -msgid "Copy target list" -msgstr "Kopiera mĆ„llista" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:111 +msgid "The current active URI of the resource" +msgstr "Aktuell aktiv URI fƶr resursen" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3253 -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" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:124 +msgid "The response of the resource" +msgstr "Resursens svar" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3266 -msgid "Paste target list" -msgstr "Klistra in mĆ„llista" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:1138 +msgid "Website running in fullscreen mode" +msgstr "Webbplats kƶrs i helskƤrmslƤge" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3267 -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" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:559 +msgid "Select Files" +msgstr "VƤlj filer" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3273 -msgid "Settings" -msgstr "InstƤllningar" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3274 -msgid "An associated WebKitWebSettings instance" -msgstr "En associerad WebKitWebSettings-instans" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3287 -#: ../../../WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:93 -#: ../../../WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:153 -msgid "Web Inspector" -msgstr "Webbinspektƶr" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:559 +msgid "Select File" +msgstr "VƤlj fil" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3288 -msgid "The associated WebKitWebInspector instance" -msgstr "Den associerade WebKitWebInspector-instansen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:802 +msgid "Web Context" +msgstr "Webbkontext" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3301 -msgid "Viewport Attributes" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:803 +msgid "The web context for the view" +msgstr "Webbkontexten fƶr vyn" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3302 -#, fuzzy -msgid "The associated WebKitViewportAttributes instance" -msgstr "Den associerade WebKitWebInspector-instansen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:820 +msgid "Related WebView" +msgstr "Relaterad WebView" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3322 -msgid "Editable" -msgstr "Redigeringsbar" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:821 +msgid "" +"The related WebKitWebView used when creating the view to share the same web " +"process" +msgstr "" +"Den relaterade WebKitWebView som anvƤnds vid skapandet av vyn fƶr att dela " +"samma webbprocess" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3323 -msgid "Whether content can be modified by the user" -msgstr "Huruvida innehĆ„llet kan Ƥndras av anvƤndaren" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:837 +msgid "WebView settings" +msgstr "WebView-instƤllningar" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3329 -msgid "Transparent" -msgstr "Genomskinlig" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:838 +msgid "The WebKitSettings of the view" +msgstr "WebKitSettings fƶr vyn" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3330 -msgid "Whether content has a transparent background" -msgstr "Huruvida innehĆ„llet har en genomskinlig bakgrund" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:854 +msgid "WebView user content manager" +msgstr "WebView hanterare fƶr anvƤndarinnehĆ„ll" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3343 -msgid "Zoom level" -msgstr "ZoomnivĆ„" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:855 +msgid "The WebKitUserContentManager of the view" +msgstr "WebKitUserContentManager fƶr vyn" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3344 -msgid "The level of zoom of the content" -msgstr "ZoomnivĆ„n fƶr innehĆ„llet" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3359 -msgid "Full content zoom" -msgstr "FullstƤndig innehĆ„llszoom" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3360 -msgid "Whether the full content is scaled when zooming" -msgstr "Huruvida hela innehĆ„llet skalas vid zoomning" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3374 -msgid "The default encoding of the web view" -msgstr "Standardkodning fƶr webbvyn" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3387 -msgid "Custom Encoding" -msgstr "Anpassad teckenkodning" - -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3388 -msgid "The custom encoding of the web view" -msgstr "Anpassad kodning fƶr webbvyn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:868 +msgid "Title" +msgstr "Titel" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3440 -msgid "Icon URI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:869 +msgid "Main frame document title" +msgstr "Dokumenttitel fƶr huvudram" -#: ../../../WebKit/gtk/webkit/webkitwebview.cpp:3441 -msgid "The URI for the favicon for the #WebKitWebView." -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:887 +msgid "Estimated Load Progress" +msgstr "FƶrvƤntad inlƤsningsprocess" -#: ../../../WebKit2/Shared/Downloads/soup/DownloadSoup.cpp:89 -#, c-format -msgid "" -"Cannot determine destination URI for download with suggested filename %s" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:888 +msgid "An estimate of the percent completion for a document load" +msgstr "Estimat av den fƤrdiga procenten fƶr en dokumentinlƤsning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:139 -#, fuzzy -msgid "Destination" -msgstr "Destinations-URI" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:900 +msgid "Favicon" +msgstr "Favicon" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:140 -msgid "The local URI to where the download will be saved" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:901 +msgid "The favicon associated to the view, if any" +msgstr "Favicon associerad med vyn, om nĆ„gon" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:152 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:122 -#, fuzzy -msgid "Response" -msgstr "NƤtverksbegƤran" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:913 +msgid "The current active URI of the view" +msgstr "Aktuell aktiv URI fƶr vyn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:153 -#, fuzzy -msgid "The response of the download" -msgstr "FaststƤller aktuellt fƶrlopp fƶr hƤmtningen" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:928 +msgid "Zoom level" +msgstr "ZoomnivĆ„" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitDownload.cpp:170 -#, fuzzy -msgid "Estimated Progress" -msgstr "Fƶrlopp" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:929 +msgid "The zoom level of the view content" +msgstr "ZoomnivĆ„n fƶr vyinnehĆ„llet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:141 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:255 -#, c-format -msgid "Unknown favicon for page %s" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:948 +msgid "Is Loading" +msgstr "LƤses in" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:147 -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:251 -#, c-format -msgid "Page %s does not have a favicon" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:949 +msgid "Whether the view is loading a page" +msgstr "Huruvida vyn lƤser in en sida" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp:247 -msgid "Favicons database not initialized yet" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:969 +msgid "Whether the view is playing audio" +msgstr "Huruvida vyn spelar ljud" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:174 -#, fuzzy -msgid "Search text" -msgstr "_Sƶk pĆ„ webben" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:986 +msgid "Editable" +msgstr "Redigerbar" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:175 -#, fuzzy -msgid "Text to search for in the view" -msgstr "Anpassad kodning fƶr webbvyn" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:987 +msgid "Whether the content can be modified by the user." +msgstr "Huruvida innehĆ„llet kan Ƥndras av anvƤndaren." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:187 -msgid "Search Options" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2993 +msgid "An exception was raised in JavaScript" +msgstr "Ett undantag kastades i JavaScript" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:188 -msgid "Search options to be used in the search operation" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3450 +msgid "There was an error creating the snapshot" +msgstr "Ett fel uppstod vid skapandet av ƶgonblicksbilden" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:201 -msgid "Maximum matches count" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:210 +msgid "Geometry" +msgstr "Geometri" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:202 -#, fuzzy -msgid "The maximum number of matches in a given text to report" -msgstr "Titeln fƶr historikobjektet" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:211 +msgid "The size and position of the window on the screen." +msgstr "Storleken och positionen fƶr fƶnstret pĆ„ skƤrmen." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:214 -#, fuzzy -msgid "WebView" -msgstr "Webbvy" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:223 +msgid "Toolbar Visible" +msgstr "Synligt verktygsfƤlt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitFindController.cpp:215 -msgid "The WebView associated with this find controller" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:224 +msgid "Whether the toolbar should be visible for the window." +msgstr "Huruvida verktygsfƤltet ska vara synligt fƶr fƶnstret." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:153 -msgid "Flags with the context of the WebKitHitTestResult" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:236 +msgid "Statusbar Visible" +msgstr "Synligt statusfƤlt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:167 -#, fuzzy -msgid "The link URI" -msgstr "Ursprunglig URI" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:237 +msgid "Whether the statusbar should be visible for the window." +msgstr "Huruvida statusfƤltet ska vara synlig fƶr fƶnstret." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:179 -#, fuzzy -msgid "Link Title" -msgstr "Titel" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:249 +msgid "Scrollbars Visible" +msgstr "Synliga rullningslister" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:180 -msgid "The link title" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:250 +msgid "Whether the scrollbars should be visible for the window." +msgstr "Huruvida rullningslisterna ska vara synliga fƶr fƶnstret." + +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:262 +msgid "Menubar Visible" +msgstr "Synlig menyrad" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:192 -msgid "Link Label" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:263 +msgid "Whether the menubar should be visible for the window." +msgstr "Huruvida menyraden ska vara synlig fƶr fƶnstret." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:193 -msgid "The link label" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:275 +msgid "Locationbar Visible" +msgstr "Synligt adressfƤlt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:206 -msgid "The image URI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:276 +msgid "Whether the locationbar should be visible for the window." +msgstr "Huruvida adressfƤltet ska vara synligt fƶr fƶnstret." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp:219 -msgid "The media URI" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:287 +msgid "Resizable" +msgstr "Ƅndringsbar storlek" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:105 -msgid "Navigation type" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:288 +msgid "Whether the window can be resized." +msgstr "Huruvida fƶnstret kan storleksƤndras." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:106 -msgid "The type of navigation triggering this decision" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:300 +msgid "Fullscreen" +msgstr "HelskƤrm" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:123 -msgid "Mouse button" -msgstr "" +#: ../../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:301 +msgid "Whether window will be displayed fullscreen." +msgstr "Huruvida fƶnstret ska visas i helskƤrm." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:124 -msgid "The mouse button used if this decision was triggered by a mouse event" -msgstr "" +#: ../../../../WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:173 +#: ../../../../WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:178 +#: ../../../../WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:181 +msgid "Web Inspector" +msgstr "Webbinspektƶr" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:140 -msgid "Mouse event modifiers" -msgstr "" +#~ msgid "autofill" +#~ msgstr "autofill" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:141 -msgid "The modifiers active if this decision was triggered by a mouse event" -msgstr "" +#~ msgid "Network Request" +#~ msgstr "NƤtverksbegƤran" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:154 -msgid "Navigation URI request" -msgstr "" +#~ msgid "The network request for the URI that should be downloaded" +#~ msgstr "NƤtverksbegƤran fƶr URI:n som ska hƤmtas" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:155 #, fuzzy -msgid "The URI request that is associated with this navigation" -msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" +#~ msgid "Network Response" +#~ msgstr "NƤtverksbegƤran" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:170 #, fuzzy -msgid "Frame name" -msgstr "Fƶreslaget filnamn" +#~ msgid "The network response for the URI that should be downloaded" +#~ msgstr "NƤtverksbegƤran fƶr URI:n som ska hƤmtas" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:171 -msgid "The name of the new frame this navigation action targets" -msgstr "" +#~ msgid "Destination URI" +#~ msgstr "Destinations-URI" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:155 -msgid "The web view that will be printed" -msgstr "" +#~ msgid "The destination URI where to save the file" +#~ msgstr "Destinations-URI dƤr sparning ska ske av filen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:167 -#, fuzzy -msgid "Print Settings" -msgstr "InstƤllningar" +#~ msgid "The filename suggested as default when saving" +#~ msgstr "Fƶreslaget filnamn som standard vid sparning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:168 -msgid "The initial print settings for the print operation" -msgstr "" +#~ msgid "Progress" +#~ msgstr "Fƶrlopp" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:179 -msgid "Page Setup" -msgstr "" +#~ msgid "Status" +#~ msgstr "Status" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:180 -#, fuzzy -msgid "The initial page setup for the print operation" -msgstr "Totala storleken fƶr filen" +#~ msgid "Determines the current status of the download" +#~ msgstr "FaststƤller aktuell status fƶr hƤmtningen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:91 -msgid "Response URI request" -msgstr "" +#~ msgid "Current Size" +#~ msgstr "Aktuell storlek" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:92 -msgid "The URI request that is associated with this policy decision" -msgstr "" +#~ msgid "The length of the data already downloaded" +#~ msgstr "LƤngden fƶr det data som redan hƤmtats" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:105 -msgid "URI response" -msgstr "" +#~ msgid "Total Size" +#~ msgstr "Total storlek" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:106 -msgid "The URI response that is associated with this policy decision" -msgstr "" +#~ msgid "The total size of the file" +#~ msgstr "Totala storleken fƶr filen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:442 #, fuzzy -msgid "Enable JavaScript" -msgstr "Aktivera skript" +#~ msgid "The absolute path of the icon database folder" +#~ msgstr "LƤngden fƶr det data som redan hƤmtats" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:443 #, fuzzy -msgid "Enable JavaScript." -msgstr "Aktivera skript" +#~ msgid "Suggested filename" +#~ msgstr "Fƶreslaget filnamn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:457 #, fuzzy -msgid "Auto load images" -msgstr "LƤs automatiskt in bilder" - -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:471 -msgid "Load icons ignoring image load setting" -msgstr "" +#~ msgid "The suggested filename for the response." +#~ msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:472 -msgid "Whether to load site icons ignoring image load setting." -msgstr "" +#, fuzzy +#~ msgid "The host of the security origin" +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:490 #, fuzzy -msgid "Whether to enable offline web application cache." -msgstr "Aktivera skript" +#~ msgid "The port of the security origin" +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:506 #, fuzzy -msgid "Enable HTML5 local storage" -msgstr "Aktivera skript" +#~ msgid "The width of the screen." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:507 #, fuzzy -msgid "Whether to enable HTML5 Local Storage support." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "The height of the screen." +#~ msgstr "Namnet pĆ„ ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:524 #, fuzzy -msgid "Enable HTML5 database" -msgstr "Aktivera skript" +#~ msgid "The width of the visible area." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:525 #, fuzzy -msgid "Whether to enable HTML5 database support." -msgstr "Aktivera skript" +#~ msgid "The height of the visible area." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:538 #, fuzzy -msgid "Enable XSS auditor" -msgstr "Aktivera skript" +#~ msgid "The width of the viewport." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:539 #, fuzzy -msgid "Whether to enable the XSS auditor." -msgstr "Aktivera skript" +#~ msgid "The height of the viewport." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:554 #, fuzzy -msgid "Enable frame flattening" -msgstr "Aktivera privat surfning" +#~ msgid "The initial scale of the viewport." +#~ msgstr "Totala storleken fƶr filen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:555 #, fuzzy -msgid "Whether to enable frame flattening." -msgstr "Aktivera privat surfning" +#~ msgid "Minimum Scale Factor" +#~ msgstr "Logisk minimumstorlek fƶr typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:567 #, fuzzy -msgid "Enable plugins" -msgstr "Aktivera insticksmoduler" +#~ msgid "The minimum scale of the viewport." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:580 #, fuzzy -msgid "Enable Java" -msgstr "Aktivera JavaScript-profilering" +#~ msgid "The maximum scale of the viewport." +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:581 #, fuzzy -msgid "Whether Java support should be enabled." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "The security origin of the database" +#~ msgstr "Anpassad kodning fƶr webbvyn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:595 -msgid "Whether JavaScript can open windows automatically." -msgstr "" +#~ msgid "Name" +#~ msgstr "Namn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:610 #, fuzzy -msgid "Enable hyperlink auditing" -msgstr "Aktivera JavaScript-profilering" +#~ msgid "The name of the Web Database database" +#~ msgstr "Namnet pĆ„ ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:611 #, fuzzy -msgid "Whether should be able to send pings." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Filename" +#~ msgstr "Fƶreslaget filnamn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:623 -#, fuzzy -msgid "Default font family" -msgstr "Standardfamilj fƶr typsnitt" +#~ msgid "The name of the frame" +#~ msgstr "Namnet pĆ„ ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:624 -msgid "" -"The font family to use as the default for content that does not specify a " -"font." -msgstr "" +#~ msgid "The document title of the frame" +#~ msgstr "Dokumenttiteln fƶr ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:637 -#, fuzzy -msgid "Monospace font family" -msgstr "Typsnittsfamiljen Monospace" +#~ msgid "The current URI of the contents displayed by the frame" +#~ msgstr "Aktuella URI:n fƶr innehĆ„llet som visas av ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:638 #, fuzzy -msgid "The font family used as the default for content using monospace font." -msgstr "" -"Standardfamiljen fƶr typsnitt som anvƤnds fƶr att visa text med fast " -"breddsteg." +#~ msgid "" +#~ "Determines the current policy for the horizontal scrollbar of the frame." +#~ msgstr "FaststƤller aktuellt fƶrlopp fƶr hƤmtningen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:650 #, fuzzy -msgid "Serif font family" -msgstr "Typsnittsfamiljen Serif" +#~ msgid "" +#~ "Determines the current policy for the vertical scrollbar of the frame." +#~ msgstr "FaststƤller aktuellt fƶrlopp fƶr hƤmtningen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:651 -msgid "The font family used as the default for content using serif font." -msgstr "" +#~ msgid "The title of the history item" +#~ msgstr "Titeln fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:663 -#, fuzzy -msgid "Sans-serif font family" -msgstr "Typsnittsfamiljen Sans Serif" +#~ msgid "Alternate Title" +#~ msgstr "Alternativ titel" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:664 -msgid "The font family used as the default for content using sans-serif font." -msgstr "" +#~ msgid "The alternate title of the history item" +#~ msgstr "Alternativ titel fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:676 -#, fuzzy -msgid "Cursive font family" -msgstr "Typsnittsfamiljen Cursive" +#~ msgid "The URI of the history item" +#~ msgstr "URI:n fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:677 -msgid "The font family used as the default for content using cursive font." -msgstr "" +#~ msgid "Original URI" +#~ msgstr "Ursprunglig URI" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:689 -#, fuzzy -msgid "Fantasy font family" -msgstr "Typsnittsfamiljen Fantasy" +#~ msgid "The original URI of the history item" +#~ msgstr "Ursprungliga URI:n fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:690 -msgid "The font family used as the default for content using fantasy font." -msgstr "" +#~ msgid "Last visited Time" +#~ msgstr "Senast besƶkt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:702 -msgid "Pictograph font family" -msgstr "" +#~ msgid "The time at which the history item was last visited" +#~ msgstr "Tiden fƶr vilket historikobjektet senast besƶktes" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:703 -msgid "The font family used as the default for content using pictograph font." -msgstr "" +#~ msgid "The Web View that renders the Web Inspector itself" +#~ msgstr "Webbvyn som renderar sjƤlva Webbinspektƶren" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:716 -#, fuzzy -msgid "Default font size" -msgstr "Standardstorlek fƶr typsnitt" +#~ msgid "Enable JavaScript profiling" +#~ msgstr "Aktivera JavaScript-profilering" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:730 -#, fuzzy -msgid "Default monospace font size" -msgstr "Standardstorlek fƶr Monospace-typsnitt" +#~ msgid "Profile the executed JavaScript." +#~ msgstr "Profilera det kƶrda JavaScript." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:745 #, fuzzy -msgid "Minimum font size" -msgstr "Minimumstorlek fƶr typsnitt" +#~ msgid "Enable Timeline profiling" +#~ msgstr "Aktivera JavaScript-profilering" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:758 -msgid "Default charset" -msgstr "" +#~ msgid "Reason" +#~ msgstr "Anledning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:759 -msgid "" -"The default text charset used when interpreting content with unspecified " -"charset." -msgstr "" +#~ msgid "The reason why this navigation is occurring" +#~ msgstr "Anledningen varfƶr denna navigering sker" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:772 -#, fuzzy -msgid "Enable private browsing" -msgstr "Aktivera privat surfning" +#~ msgid "The URI that was requested as the target for the navigation" +#~ msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:773 -#, fuzzy -msgid "Whether to enable private browsing" -msgstr "Aktivera privat surfning" +#~ msgid "Button" +#~ msgstr "Knapp" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:785 -#, fuzzy -msgid "Enable developer extras" -msgstr "Aktivera extrafunktioner fƶr utvecklare" +#~ msgid "The button used to click" +#~ msgstr "Knappen som anvƤndes fƶr att klicka" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:786 -#, fuzzy -msgid "Whether to enable developer extras" -msgstr "Aktivera extrafunktioner fƶr utvecklare" +#~ msgid "Modifier state" +#~ msgstr "ModifierartillstĆ„nd" + +#~ msgid "A bitmask representing the state of the modifier keys" +#~ msgstr "En bitmask som representerar tillstĆ„ndet fƶr modifierartangenterna" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:798 #, fuzzy -msgid "Enable resizable text areas" -msgstr "StorleksƤndringsbara textomrĆ„den " +#~ msgid "Target frame" +#~ msgstr "Namnet pĆ„ ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:799 #, fuzzy -msgid "Whether to enable resizable text areas" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "The target frame for the navigation" +#~ msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:814 #, fuzzy -msgid "Enable tabs to links" -msgstr "Aktivera insticksmoduler" +#~ msgid "Enabled" +#~ msgstr "Redigeringsbar" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:815 #, fuzzy -msgid "Whether to enable tabs to links" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Whether the plugin is enabled" +#~ msgstr "Huruvida bakgrundsbilder ska skrivas ut." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:828 #, fuzzy -msgid "Enable DNS prefetching" -msgstr "Aktivera JavaScript-profilering" +#~ msgid "The URI of the resource" +#~ msgstr "URI:n fƶr historikobjektet" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:829 #, fuzzy -msgid "Whether to enable DNS prefetching" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "The MIME type of the resource" +#~ msgstr "Titeln fƶr historikobjektet" + +#~ msgid "Encoding" +#~ msgstr "Teckenkodning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:858 #, fuzzy -msgid "Whether to enable the Javascriipt Fullscreen API" -msgstr "Aktivera skript" +#~ msgid "The text encoding name of the resource" +#~ msgstr "Standardkodning fƶr webbvyn" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:871 #, fuzzy -msgid "Whether background images should be drawn during printing" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "The frame name of the resource" +#~ msgstr "Namnet pĆ„ ramen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:922 -msgid "Allow modal dialogs" -msgstr "" +#~ msgid "Default Encoding" +#~ msgstr "Standardteckenkodning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:923 -msgid "Whether it is possible to create modal dialogs" -msgstr "" +#~ msgid "The default encoding used to display text." +#~ msgstr "Standardkodningen som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:938 -msgid "Zoom Text Only" -msgstr "" +#~ msgid "Cursive Font Family" +#~ msgstr "Typsnittsfamiljen Cursive" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:939 -msgid "Whether zoom level of web view changes only the text size" -msgstr "" +#~ msgid "The default Cursive font family used to display text." +#~ msgstr "" +#~ "Standardfamiljen fƶr Cursive-typsnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:953 -msgid "JavaScript can access clipboard" -msgstr "" +#~ msgid "Default Font Family" +#~ msgstr "Standardfamilj fƶr typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1000 -msgid "Draw compositing indicators" -msgstr "" +#~ msgid "The default font family used to display text." +#~ msgstr "Standardfamiljen fƶr typsnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1001 -msgid "Whether to draw compositing borders and repaint counters" -msgstr "" +#~ msgid "Fantasy Font Family" +#~ msgstr "Typsnittsfamiljen Fantasy" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1059 -msgid "User agent string" -msgstr "" +#~ msgid "The default Fantasy font family used to display text." +#~ msgstr "" +#~ "Standardfamiljen fƶr Fantasy-typsnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:1060 -msgid "The user agent string" -msgstr "" +#~ msgid "Monospace Font Family" +#~ msgstr "Typsnittsfamiljen Monospace" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:100 -#, fuzzy -msgid "The URI for which the response was made." -msgstr "URI:n fƶr historikobjektet" +#~ 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." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:111 -#, fuzzy -msgid "Status Code" -msgstr "Status" +#~ msgid "Sans Serif Font Family" +#~ msgstr "Typsnittsfamiljen Sans Serif" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:112 -msgid "The status code of the response as returned by the server." -msgstr "" +#~ 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." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:124 -msgid "Content Length" -msgstr "" +#~ msgid "Serif Font Family" +#~ msgstr "Typsnittsfamiljen Serif" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:125 -#, fuzzy -msgid "The expected content length of the response." -msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" +#~ msgid "The default Serif font family used to display text." +#~ msgstr "Standardfamiljen fƶr Serif-typsnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:138 -#, fuzzy -msgid "The MIME type of the response" -msgstr "Titeln fƶr historikobjektet" +#~ msgid "Default Font Size" +#~ msgstr "Standardstorlek fƶr typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:151 -#, fuzzy -msgid "The suggested filename for the URI response" -msgstr "URI:n som begƤrdes som mĆ„l fƶr navigeringen" +#~ msgid "Default Monospace Font Size" +#~ msgstr "Standardstorlek fƶr Monospace-typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:134 -msgid "Attached Height" -msgstr "" +#~ msgid "Minimum Font Size" +#~ msgstr "Minimumstorlek fƶr typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp:135 -msgid "The height that the inspector view should have when it is attached" -msgstr "" +#~ msgid "Minimum Logical Font Size" +#~ msgstr "Logisk minimumstorlek fƶr typsnitt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:110 -#, fuzzy -msgid "The current active URI of the resource" -msgstr "URI:n fƶr historikobjektet" +#~ msgid "The minimum logical font size used to display text." +#~ msgstr "Logisk minimumstorlek fƶr typsnitt som anvƤnds fƶr att visa text." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp:123 -#, fuzzy -msgid "The response of the resource" -msgstr "Namnet pĆ„ ramen" +#~ msgid "Enforce 96 DPI" +#~ msgstr "Tvinga 96 punkter/tum" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:577 -msgid "Web Context" -msgstr "" +#~ msgid "Enforce a resolution of 96 DPI" +#~ msgstr "Tvinga en upplƶsning pĆ„ 96 punkter/tum" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:578 -#, fuzzy -msgid "The web context for the view" -msgstr "Titeln fƶr historikobjektet" +#~ msgid "Auto Load Images" +#~ msgstr "LƤs automatiskt in bilder" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:592 -msgid "Main frame document title" -msgstr "" +#~ msgid "Auto Shrink Images" +#~ msgstr "Minska bilder automatiskt" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:610 -msgid "Estimated Load Progress" -msgstr "" +#~ msgid "Automatically shrink standalone images to fit." +#~ msgstr "Minska automatiskt fristĆ„ende bilder till att passa." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:611 -msgid "An estimate of the percent completion for a document load" -msgstr "" +#~ msgid "Whether background images should be printed." +#~ msgstr "Huruvida bakgrundsbilder ska skrivas ut." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:623 -msgid "Favicon" -msgstr "" +#~ msgid "Enable Scripts" +#~ msgstr "Aktivera skript" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:624 -msgid "The favicon associated to the view, if any" -msgstr "" +#~ msgid "Enable embedded scripting languages." +#~ msgstr "Aktivera inbƤddade skriptsprĆ„k." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:636 -#, fuzzy -msgid "The current active URI of the view" -msgstr "Dokumenttiteln fƶr ramen" +#~ msgid "Enable Plugins" +#~ msgstr "Aktivera insticksmoduler" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:650 -#, fuzzy -msgid "The zoom level of the view content" -msgstr "ZoomnivĆ„n fƶr innehĆ„llet" +#~ msgid "Resizable Text Areas" +#~ msgstr "StorleksƤndringsbara textomrĆ„den " -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:668 -#, fuzzy -msgid "Whether the view is loading a page" -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Whether text areas are resizable." +#~ msgstr "Huruvida textomrĆ„den kan storleksƤndras." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:682 -msgid "The view mode to display the web view contents" -msgstr "" +#~ msgid "User Stylesheet URI" +#~ msgstr "URI fƶr anvƤndarstilmall" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2416 -msgid "An exception was raised in JavaScript" -msgstr "" +#~ 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." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:209 -msgid "Geometry" -msgstr "" +#~ msgid "Zoom Stepping Value" +#~ msgstr "StegvƤrde fƶr zoom" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:210 -msgid "The size and position of the window on the screen." -msgstr "" +#~ 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." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:222 -msgid "Toolbar Visible" -msgstr "" +#~ msgid "Enable Developer Extras" +#~ msgstr "Aktivera extrafunktioner fƶr utvecklare" + +#~ msgid "Enables special extensions that help developers" +#~ msgstr "Aktiverar speciella tillƤgg som hjƤlper utvecklarna" + +#~ msgid "Enable Private Browsing" +#~ msgstr "Aktivera privat surfning" + +#~ msgid "Enables private browsing mode" +#~ msgstr "Aktiverar lƤget fƶr privat surfning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:223 #, fuzzy -msgid "Whether the toolbar should be visible for the window." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Enables spell checking while typing" +#~ msgstr "Kontrollera stavning vid _inmatning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:235 -msgid "Statusbar Visible" -msgstr "" +#, fuzzy +#~ msgid "Enable XSS Auditor" +#~ msgstr "Aktivera skript" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:236 #, fuzzy -msgid "Whether the statusbar should be visible for the window." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Whether to enable the XSS auditor" +#~ msgstr "Aktivera skript" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:248 -msgid "Scrollbars Visible" -msgstr "" +#, fuzzy +#~ msgid "Enable Frame Flattening" +#~ msgstr "Aktivera privat surfning" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:249 #, fuzzy -msgid "Whether the scrollbars should be visible for the window." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Enable DOM paste" +#~ msgstr "Aktivera skript" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:261 -msgid "Menubar Visible" -msgstr "" +#, fuzzy +#~ msgid "Enable Java Applet" +#~ msgstr "Aktivera JavaScript-profilering" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:262 #, fuzzy -msgid "Whether the menubar should be visible for the window." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Enable Hyperlink Auditing" +#~ msgstr "Aktivera JavaScript-profilering" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:274 -msgid "Locationbar Visible" -msgstr "" +#, fuzzy +#~ msgid "Whether should be able to send pings" +#~ msgstr "Huruvida bakgrundsbilder ska skrivas ut." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:275 #, fuzzy -msgid "Whether the locationbar should be visible for the window." -msgstr "Huruvida bakgrundsbilder ska skrivas ut." +#~ msgid "Whether the Mozilla style API should be enabled." +#~ msgstr "Huruvida bakgrundsbilder ska skrivas ut." -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:286 #, fuzzy -msgid "Resizable" -msgstr "StorleksƤndringsbara textomrĆ„den " +#~ msgid "Whether accelerated compositing should be enabled" +#~ msgstr "Huruvida bakgrundsbilder ska skrivas ut." + +#~ msgid "Returns the @web_view's document title" +#~ msgstr "Returnerar dokumenttiteln fƶr @web_view" + +#~ 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" + +#~ msgid "Copy target list" +#~ msgstr "Kopiera mĆ„llista" + +#~ 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" + +#~ msgid "Paste target list" +#~ msgstr "Klistra in mĆ„llista" + +#~ 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" + +#~ msgid "Settings" +#~ msgstr "InstƤllningar" + +#~ msgid "An associated WebKitWebSettings instance" +#~ msgstr "En associerad WebKitWebSettings-instans" + +#~ msgid "The associated WebKitWebInspector instance" +#~ msgstr "Den associerade WebKitWebInspector-instansen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:287 #, fuzzy -msgid "Whether the window can be resized." -msgstr "Huruvida textomrĆ„den kan storleksƤndras." +#~ msgid "The associated WebKitViewportAttributes instance" +#~ msgstr "Den associerade WebKitWebInspector-instansen" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:299 -msgid "Fullscreen" -msgstr "" +#~ msgid "Transparent" +#~ msgstr "Genomskinlig" -#: ../../../WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp:300 -msgid "Whether window will be displayed fullscreen." -msgstr "" +#~ msgid "Whether content has a transparent background" +#~ msgstr "Huruvida innehĆ„llet har en genomskinlig bakgrund" + +#~ msgid "The level of zoom of the content" +#~ msgstr "ZoomnivĆ„n fƶr innehĆ„llet" + +#~ msgid "Full content zoom" +#~ msgstr "FullstƤndig innehĆ„llszoom" + +#~ msgid "Whether the full content is scaled when zooming" +#~ msgstr "Huruvida hela innehĆ„llet skalas vid zoomning" + +#~ msgid "The default encoding of the web view" +#~ msgstr "Standardkodning fƶr webbvyn" + +#~ msgid "Custom Encoding" +#~ msgstr "Anpassad teckenkodning" + +#~ msgid "The custom encoding of the web view" +#~ msgstr "Anpassad kodning fƶr webbvyn" #~ msgid "Upload File" #~ msgstr "Skicka upp fil" diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -37,6 +37,7 @@ #include "ResourceHandle.h" #include #include +#include #include #include @@ -55,7 +56,7 @@ SoupNetworkSession& SoupNetworkSession::defaultSession() { - static SoupNetworkSession networkSession(soupCookieJar()); + static NeverDestroyed networkSession(soupCookieJar()); return networkSession; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/platform/network/soup/SoupNetworkSession.h 2015-08-06 08:21:28.000000000 +0000 @@ -72,6 +72,8 @@ void setAcceptLanguages(const Vector&); private: + friend class NeverDestroyed; + SoupNetworkSession(SoupCookieJar*); SoupNetworkSession(SoupSession*); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderBlock.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderBlock.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderBlock.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderBlock.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -1293,71 +1293,75 @@ return margin; } -void RenderBlock::layoutPositionedObjects(bool relayoutChildren, bool fixedPositionObjectsOnly) +void RenderBlock::layoutPositionedObject(RenderBox& r, bool relayoutChildren, bool fixedPositionObjectsOnly) { - TrackedRendererListHashSet* positionedDescendants = positionedObjects(); - if (!positionedDescendants) - return; + estimateRegionRangeForBoxChild(r); - for (auto it = positionedDescendants->begin(), end = positionedDescendants->end(); it != end; ++it) { - RenderBox& r = **it; - - estimateRegionRangeForBoxChild(r); - - // A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So - // if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e. - // it has static position. - markFixedPositionObjectForLayoutIfNeeded(r); - if (fixedPositionObjectsOnly) { - r.layoutIfNeeded(); - continue; - } + // A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So + // if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e. + // it has static position. + markFixedPositionObjectForLayoutIfNeeded(r); + if (fixedPositionObjectsOnly) { + r.layoutIfNeeded(); + return; + } - // When a non-positioned block element moves, it may have positioned children that are implicitly positioned relative to the - // non-positioned block. Rather than trying to detect all of these movement cases, we just always lay out positioned - // objects that are positioned implicitly like this. Such objects are rare, and so in typical DHTML menu usage (where everything is - // positioned explicitly) this should not incur a performance penalty. - if (relayoutChildren || (r.style().hasStaticBlockPosition(isHorizontalWritingMode()) && r.parent() != this)) - r.setChildNeedsLayout(MarkOnlyThis); - - // If relayoutChildren is set and the child has percentage padding or an embedded content box, we also need to invalidate the childs pref widths. - if (relayoutChildren && r.needsPreferredWidthsRecalculation()) - r.setPreferredLogicalWidthsDirty(true, MarkOnlyThis); + // When a non-positioned block element moves, it may have positioned children that are implicitly positioned relative to the + // non-positioned block. Rather than trying to detect all of these movement cases, we just always lay out positioned + // objects that are positioned implicitly like this. Such objects are rare, and so in typical DHTML menu usage (where everything is + // positioned explicitly) this should not incur a performance penalty. + if (relayoutChildren || (r.style().hasStaticBlockPosition(isHorizontalWritingMode()) && r.parent() != this)) + r.setChildNeedsLayout(MarkOnlyThis); - r.markForPaginationRelayoutIfNeeded(); + // If relayoutChildren is set and the child has percentage padding or an embedded content box, we also need to invalidate the childs pref widths. + if (relayoutChildren && r.needsPreferredWidthsRecalculation()) + r.setPreferredLogicalWidthsDirty(true, MarkOnlyThis); + + r.markForPaginationRelayoutIfNeeded(); + + // We don't have to do a full layout. We just have to update our position. Try that first. If we have shrink-to-fit width + // and we hit the available width constraint, the layoutIfNeeded() will catch it and do a full layout. + if (r.needsPositionedMovementLayoutOnly() && r.tryLayoutDoingPositionedMovementOnly()) + r.clearNeedsLayout(); - // We don't have to do a full layout. We just have to update our position. Try that first. If we have shrink-to-fit width - // and we hit the available width constraint, the layoutIfNeeded() will catch it and do a full layout. - if (r.needsPositionedMovementLayoutOnly() && r.tryLayoutDoingPositionedMovementOnly()) - r.clearNeedsLayout(); - - // If we are paginated or in a line grid, go ahead and compute a vertical position for our object now. - // If it's wrong we'll lay out again. - LayoutUnit oldLogicalTop = 0; - bool needsBlockDirectionLocationSetBeforeLayout = r.needsLayout() && view().layoutState()->needsBlockDirectionLocationSetBeforeLayout(); - if (needsBlockDirectionLocationSetBeforeLayout) { - if (isHorizontalWritingMode() == r.isHorizontalWritingMode()) - r.updateLogicalHeight(); - else - r.updateLogicalWidth(); - oldLogicalTop = logicalTopForChild(r); - } + // If we are paginated or in a line grid, compute a vertical position for our object now. + // If it's wrong we'll lay out again. + LayoutUnit oldLogicalTop = 0; + bool needsBlockDirectionLocationSetBeforeLayout = r.needsLayout() && view().layoutState()->needsBlockDirectionLocationSetBeforeLayout(); + if (needsBlockDirectionLocationSetBeforeLayout) { + if (isHorizontalWritingMode() == r.isHorizontalWritingMode()) + r.updateLogicalHeight(); + else + r.updateLogicalWidth(); + oldLogicalTop = logicalTopForChild(r); + } - r.layoutIfNeeded(); + r.layoutIfNeeded(); - // Lay out again if our estimate was wrong. - if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r) != oldLogicalTop) { - r.setChildNeedsLayout(MarkOnlyThis); - r.layoutIfNeeded(); - } + // Lay out again if our estimate was wrong. + if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r) != oldLogicalTop) { + r.setChildNeedsLayout(MarkOnlyThis); + r.layoutIfNeeded(); + } - if (updateRegionRangeForBoxChild(r)) { - r.setNeedsLayout(MarkOnlyThis); - r.layoutIfNeeded(); - } + if (updateRegionRangeForBoxChild(r)) { + r.setNeedsLayout(MarkOnlyThis); + r.layoutIfNeeded(); } } +void RenderBlock::layoutPositionedObjects(bool relayoutChildren, bool fixedPositionObjectsOnly) +{ + TrackedRendererListHashSet* positionedDescendants = positionedObjects(); + if (!positionedDescendants) + return; + + // Do not cache positionedDescendants->end() in a local variable, since |positionedDescendants| can be mutated + // as it is walked. We always need to fetch the new end() value dynamically. + for (auto it = positionedDescendants->begin(); it != positionedDescendants->end(); ++it) + layoutPositionedObject(**it, relayoutChildren, fixedPositionObjectsOnly); +} + void RenderBlock::markPositionedObjectsForLayout() { TrackedRendererListHashSet* positionedDescendants = positionedObjects(); @@ -2087,7 +2091,7 @@ return beforeBlock; } -void RenderBlock::insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap) +void RenderBlock::insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*& descendantsMap, TrackedContainerMap*& containerMap, bool forceNewEntry) { if (!descendantsMap) { descendantsMap = new TrackedDescendantsMap; @@ -2099,6 +2103,12 @@ descendantSet = new TrackedRendererListHashSet; descendantsMap->set(this, std::unique_ptr(descendantSet)); } + + if (forceNewEntry) { + descendantSet->remove(&descendant); + containerMap->remove(&descendant); + } + bool added = descendantSet->add(&descendant).isNewEntry; if (!added) { ASSERT(containerMap->get(&descendant)); @@ -2110,7 +2120,7 @@ if (!containerSet) { containerSet = new HashSet; containerMap->set(&descendant, std::unique_ptr>(containerSet)); - } + } ASSERT(!containerSet->contains(this)); containerSet->add(this); } @@ -2158,7 +2168,7 @@ if (o.isRenderFlowThread()) return; - insertIntoTrackedRendererMaps(o, gPositionedDescendantsMap, gPositionedContainerMap); + insertIntoTrackedRendererMaps(o, gPositionedDescendantsMap, gPositionedContainerMap, isRenderView()); } void RenderBlock::removePositionedObject(RenderBox& o) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderBlock.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderBlock.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderBlock.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderBlock.h 2015-08-06 08:21:28.000000000 +0000 @@ -318,6 +318,8 @@ virtual void layout() override; void layoutPositionedObjects(bool relayoutChildren, bool fixedPositionObjectsOnly = false); + void layoutPositionedObject(RenderBox&, bool relayoutChildren, bool fixedPositionObjectsOnly); + void markFixedPositionObjectForLayoutIfNeeded(RenderObject& child); LayoutUnit marginIntrinsicLogicalWidthForChild(RenderBox&) const; @@ -417,7 +419,7 @@ // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow virtual bool hasLines() const { return false; } - void insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*&, TrackedContainerMap*&); + void insertIntoTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*&, TrackedContainerMap*&, bool forceNewEntry = false); static void removeFromTrackedRendererMaps(RenderBox& descendant, TrackedDescendantsMap*&, TrackedContainerMap*&); void createFirstLetterRenderer(RenderElement* firstLetterBlock, RenderText* currentTextChild); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderLayerCompositor.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderLayerCompositor.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderLayerCompositor.cpp 2015-07-06 13:02:22.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderLayerCompositor.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -2714,7 +2714,12 @@ } // Fixed position elements that are invisible in the current view don't get their own layer. - LayoutRect viewBounds = m_renderView.frameView().viewportConstrainedVisibleContentRect(); + // FIXME: We shouldn't have to check useFixedLayout() here; one of the viewport rects needs to give the correct answer. + LayoutRect viewBounds; + if (m_renderView.frameView().useFixedLayout()) + viewBounds = m_renderView.unscaledDocumentRect(); + else + viewBounds = m_renderView.frameView().viewportConstrainedVisibleContentRect(); LayoutRect layerBounds = layer.calculateLayerBounds(&layer, LayoutSize(), RenderLayer::UseLocalClipRectIfPossible | RenderLayer::IncludeLayerFilterOutsets | RenderLayer::UseFragmentBoxesExcludingCompositing | RenderLayer::ExcludeHiddenDescendants | RenderLayer::DontConstrainForMask | RenderLayer::IncludeCompositedDescendants); // Map to m_renderView to ignore page scale. diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderView.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderView.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/rendering/RenderView.cpp 2015-07-07 10:42:54.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/rendering/RenderView.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -75,25 +75,13 @@ }; struct SelectionIterator { - RenderObject* m_current; - Vector m_spannerStack; - - SelectionIterator(RenderObject* o) + SelectionIterator(RenderObject* start) + : m_current(start) { - m_current = o; checkForSpanner(); } - void checkForSpanner() - { - if (!is(m_current)) - return; - auto& placeholder = downcast(*m_current); - m_spannerStack.append(&placeholder); - m_current = placeholder.spanner(); - } - - RenderObject* current() + RenderObject* current() const { return m_current; } @@ -111,6 +99,19 @@ } return m_current; } + +private: + void checkForSpanner() + { + if (!is(m_current)) + return; + auto& placeholder = downcast(*m_current); + m_spannerStack.append(&placeholder); + m_current = placeholder.spanner(); + } + + RenderObject* m_current { nullptr }; + Vector m_spannerStack; }; RenderView::RenderView(Document& document, Ref&& style) @@ -611,7 +612,8 @@ if (frameView().isTransparent()) // FIXME: This needs to be dynamic. We should be able to go back to blitting if we ever stop being transparent. frameView().setCannotBlitToWindow(); // The parent must show behind the child. else { - Color backgroundColor = backgroundShouldExtendBeyondPage ? frameView().documentBackgroundColor() : frameView().baseBackgroundColor(); + Color documentBackgroundColor = frameView().documentBackgroundColor(); + Color backgroundColor = (backgroundShouldExtendBeyondPage && documentBackgroundColor.isValid()) ? documentBackgroundColor : frameView().baseBackgroundColor(); if (backgroundColor.alpha()) { CompositeOperator previousOperator = paintInfo.context->compositeOperation(); paintInfo.context->setCompositeOperation(CompositeCopy); @@ -1019,14 +1021,18 @@ root.selectionData().selectionEnd()->setSelectionStateIfNeeded(SelectionEnd); } - RenderObject* o = root.selectionData().selectionStart(); - RenderObject* stop = rendererAfterPosition(root.selectionData().selectionEnd(), root.selectionData().selectionEndPos()); - SelectionIterator selectionIterator(o); - - while (o && o != stop) { - if (o != root.selectionData().selectionStart() && o != root.selectionData().selectionEnd() && o->canBeSelectionLeaf()) - o->setSelectionStateIfNeeded(SelectionInside); - o = selectionIterator.next(); + RenderObject* selectionStart = root.selectionData().selectionStart(); + RenderObject* selectionEnd = rendererAfterPosition(root.selectionData().selectionEnd(), root.selectionData().selectionEndPos()); + SelectionIterator selectionIterator(selectionStart); + for (RenderObject* currentRenderer = selectionStart; currentRenderer && currentRenderer != selectionEnd; currentRenderer = selectionIterator.next()) { + if (currentRenderer == root.selectionData().selectionStart() || currentRenderer == root.selectionData().selectionEnd()) + continue; + if (!currentRenderer->canBeSelectionLeaf()) + continue; + // FIXME: Move this logic to SelectionIterator::next() + if (¤tRenderer->selectionRoot() != &root) + continue; + currentRenderer->setSelectionStateIfNeeded(SelectionInside); } if (blockRepaintMode != RepaintNothing) @@ -1036,36 +1042,33 @@ // put them in the new objects list. SelectedObjectMap newSelectedObjects; SelectedBlockMap newSelectedBlocks; - o = root.selectionData().selectionStart(); - selectionIterator = SelectionIterator(o); - while (o && o != stop) { - if (isValidObjectForNewSelection(root, *o)) { - std::unique_ptr selectionInfo = std::make_unique(*o, true); + selectionIterator = SelectionIterator(selectionStart); + for (RenderObject* currentRenderer = selectionStart; currentRenderer && currentRenderer != selectionEnd; currentRenderer = selectionIterator.next()) { + if (isValidObjectForNewSelection(root, *currentRenderer)) { + std::unique_ptr selectionInfo = std::make_unique(*currentRenderer, true); #if ENABLE(SERVICE_CONTROLS) for (auto& rect : selectionInfo->collectedSelectionRects()) m_selectionRectGatherer.addRect(selectionInfo->repaintContainer(), rect); - if (!o->isTextOrLineBreak()) + if (!currentRenderer->isTextOrLineBreak()) m_selectionRectGatherer.setTextOnly(false); #endif - newSelectedObjects.set(o, WTF::move(selectionInfo)); + newSelectedObjects.set(currentRenderer, WTF::move(selectionInfo)); - RenderBlock* cb = o->containingBlock(); - while (cb && !cb->isRenderView()) { - std::unique_ptr& blockInfo = newSelectedBlocks.add(cb, nullptr).iterator->value; + RenderBlock* containingBlock = currentRenderer->containingBlock(); + while (containingBlock && !containingBlock->isRenderView()) { + std::unique_ptr& blockInfo = newSelectedBlocks.add(containingBlock, nullptr).iterator->value; if (blockInfo) break; - blockInfo = std::make_unique(*cb); - cb = cb->containingBlock(); + blockInfo = std::make_unique(*containingBlock); + containingBlock = containingBlock->containingBlock(); #if ENABLE(SERVICE_CONTROLS) m_selectionRectGatherer.addGapRects(blockInfo->repaintContainer(), blockInfo->rects()); #endif } } - - o = selectionIterator.next(); } if (blockRepaintMode == RepaintNothing) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGAnimatedPath.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGAnimatedPath.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGAnimatedPath.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGAnimatedPath.cpp 2015-08-04 11:46:27.000000000 +0000 @@ -41,25 +41,10 @@ std::unique_ptr SVGAnimatedPathAnimator::startAnimValAnimation(const SVGElementAnimatedPropertyList& animatedTypes) { ASSERT(animatedTypes.size() >= 1); - SVGAnimatedPathSegListPropertyTearOff* property = castAnimatedPropertyToActualType(animatedTypes[0].properties[0].get()); - const SVGPathSegList& baseValue = property->currentBaseValue(); // Build initial path byte stream. auto byteStream = std::make_unique(); - buildSVGPathByteStreamFromSVGPathSegList(baseValue, byteStream.get(), UnalteredParsing); - - Vector> result; - - SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end(); - for (SVGElementAnimatedPropertyList::const_iterator it = animatedTypes.begin(); it != end; ++it) - result.append(castAnimatedPropertyToActualType(it->properties[0].get())); - - SVGElement::InstanceUpdateBlocker blocker(*property->contextElement()); - - size_t resultSize = result.size(); - for (size_t i = 0; i < resultSize; ++i) - result[i]->animationStarted(byteStream.get(), &baseValue); - + resetAnimValToBaseVal(animatedTypes, byteStream.get()); return SVGAnimatedType::createPath(WTF::move(byteStream)); } @@ -68,13 +53,35 @@ stopAnimValAnimationForType(animatedTypes); } +void SVGAnimatedPathAnimator::resetAnimValToBaseVal(const SVGElementAnimatedPropertyList& animatedTypes, SVGPathByteStream* byteStream) +{ + SVGAnimatedPathSegListPropertyTearOff* property = castAnimatedPropertyToActualType(animatedTypes[0].properties[0].get()); + const SVGPathSegList& baseValue = property->currentBaseValue(); + + buildSVGPathByteStreamFromSVGPathSegList(baseValue, byteStream, UnalteredParsing); + + Vector> result; + + for (auto& type : animatedTypes) { + auto* segment = castAnimatedPropertyToActualType(type.properties[0].get()); + if (segment->isAnimating()) + continue; + result.append(segment); + } + + if (!result.isEmpty()) { + SVGElement::InstanceUpdateBlocker blocker(*property->contextElement()); + for (auto& segment : result) + segment->animationStarted(byteStream, &baseValue); + } +} + void SVGAnimatedPathAnimator::resetAnimValToBaseVal(const SVGElementAnimatedPropertyList& animatedTypes, SVGAnimatedType* type) { ASSERT(animatedTypes.size() >= 1); ASSERT(type); ASSERT(type->type() == m_type); - const SVGPathSegList& baseValue = castAnimatedPropertyToActualType(animatedTypes[0].properties[0].get())->currentBaseValue(); - buildSVGPathByteStreamFromSVGPathSegList(baseValue, type->path(), UnalteredParsing); + resetAnimValToBaseVal(animatedTypes, type->path()); } void SVGAnimatedPathAnimator::animValWillChange(const SVGElementAnimatedPropertyList& animatedTypes) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGAnimatedPath.h webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGAnimatedPath.h --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGAnimatedPath.h 2015-05-20 15:25:36.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGAnimatedPath.h 2015-08-04 11:46:27.000000000 +0000 @@ -40,6 +40,9 @@ virtual void addAnimatedTypes(SVGAnimatedType*, SVGAnimatedType*) override; virtual void calculateAnimatedValue(float percentage, unsigned repeatCount, SVGAnimatedType*, SVGAnimatedType*, SVGAnimatedType*, SVGAnimatedType*) override; virtual float calculateDistance(const String& fromString, const String& toString) override; + +private: + void resetAnimValToBaseVal(const SVGElementAnimatedPropertyList&, SVGPathByteStream*); }; } // namespace WebCore diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGElement.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGElement.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGElement.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGElement.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -503,7 +503,8 @@ if (SVGElement* oldCorrespondingElement = m_svgRareData->correspondingElement()) oldCorrespondingElement->m_svgRareData->instances().remove(this); } - ensureSVGRareData().setCorrespondingElement(correspondingElement); + if (m_svgRareData || correspondingElement) + ensureSVGRareData().setCorrespondingElement(correspondingElement); if (correspondingElement) correspondingElement->ensureSVGRareData().instances().add(this); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGUseElement.cpp webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGUseElement.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebCore/svg/SVGUseElement.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebCore/svg/SVGUseElement.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -330,8 +330,11 @@ } ++it; } - for (auto* element : disallowedElements) + for (auto* element : disallowedElements) { + for (auto& descendant : descendantsOfType(*element)) + descendant.setCorrespondingElement(nullptr); element->parentNode()->removeChild(element); + } } static void associateClonesWithOriginals(SVGElement& clone, SVGElement& original) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/gtk/NEWS webkit2gtk-2.8.5+dfsg1/Source/WebKit2/gtk/NEWS --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/gtk/NEWS 2015-07-08 09:26:58.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/gtk/NEWS 2015-08-06 08:58:55.000000000 +0000 @@ -1,4 +1,21 @@ ================= +WebKitGTK+ 2.8.5 +================= + +What's new in WebKitGTK+ 2.8.5? + + - Fix the window size reported when the web view isn't realized yet. This fixes the layout of + some websites when opening new tabs in the browser and anchor links when opened in new tabs too. + - Prevent clipboard contents from being lost when web process finishes. + - Always allow font matching for strong aliases. + - Move GStreamer missing plugins installer to the UI process. + - Fix a crash when spell checker returns no guesses. + - Fix a crash when SoupSession is destroyed in exit handler. + - Fix a crash closing a page when default context menu is open. + - Several crashes and rendering issues fixed. + - Translation updates: Swedish. + +================= WebKitGTK+ 2.8.4 ================= diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -65,8 +65,9 @@ void NetworkConnectionToWebProcess::didCleanupResourceLoader(NetworkResourceLoader& loader) { - RefPtr removedLoader = m_networkResourceLoaders.take(loader.identifier()); - ASSERT(removedLoader == &loader); + ASSERT(m_networkResourceLoaders.get(loader.identifier()) == &loader); + + m_networkResourceLoaders.remove(loader.identifier()); } void NetworkConnectionToWebProcess::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder) @@ -188,6 +189,11 @@ } NetworkResourceLoader* loader = m_networkResourceLoaders.get(mainResourceLoadIdentifier); + if (!loader) { + // If we're trying to download a blob here loader can be null. + return; + } + networkProcess.downloadManager().convertHandleToDownload(downloadID, loader->handle(), request, response); // Unblock the URL connection operation queue. diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PlatformGTK.cmake webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PlatformGTK.cmake --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PlatformGTK.cmake 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PlatformGTK.cmake 2015-08-06 08:21:28.000000000 +0000 @@ -270,6 +270,8 @@ UIProcess/cairo/BackingStoreCairo.cpp + UIProcess/gstreamer/WebPageProxyGStreamer.cpp + UIProcess/gtk/DragAndDropHandler.cpp UIProcess/gtk/ExperimentalFeatures.cpp UIProcess/gtk/GestureController.cpp @@ -320,6 +322,8 @@ WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp + WebProcess/WebPage/gstreamer/WebPageGStreamer.cpp + WebProcess/WebPage/gtk/PrinterListGtk.cpp WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp WebProcess/WebPage/gtk/WebPageGtk.cpp @@ -474,6 +478,7 @@ ${CAIRO_INCLUDE_DIRS} ${ENCHANT_INCLUDE_DIRS} ${GEOCLUE_INCLUDE_DIRS} + ${GSTREAMER_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} ) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -527,17 +527,9 @@ m_plugin->manualStreamDidFail(wasCancelled); } - -void PluginControllerProxy::handleMouseEvent(const WebMouseEvent& mouseEvent, PassRefPtr reply) -{ - // Always let the web process think that we've handled this mouse event, even before passing it along to the plug-in. - // This is a workaround for - // UI process thinks the page is unresponsive when a plug-in is showing a context menu. - // The web process sends a synchronous HandleMouseEvent message and the plug-in process spawns a nested - // run loop when showing the context menu, so eventually the unresponsiveness timer kicks in in the UI process. - // FIXME: We should come up with a better way to do this. - reply->send(true); +void PluginControllerProxy::handleMouseEvent(const WebMouseEvent& mouseEvent) +{ m_plugin->handleMouseEvent(mouseEvent); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.h 2015-08-06 08:21:28.000000000 +0000 @@ -136,7 +136,7 @@ void manualStreamDidReceiveData(const IPC::DataReference& data); void manualStreamDidFinishLoading(); void manualStreamDidFail(bool wasCancelled); - void handleMouseEvent(const WebMouseEvent&, PassRefPtr); + void handleMouseEvent(const WebMouseEvent&); void handleWheelEvent(const WebWheelEvent&, bool& handled); void handleMouseEnterEvent(const WebMouseEvent&, bool& handled); void handleMouseLeaveEvent(const WebMouseEvent&, bool& handled); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in 2015-05-20 15:25:37.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in 2015-08-06 08:21:28.000000000 +0000 @@ -63,7 +63,7 @@ ManualStreamDidFail(bool wasCancelled) # Sent when a mouse event (that isn't a mouse enter/leave event or a wheel event) should be processed. - HandleMouseEvent(WebKit::WebMouseEvent mouseEvent) -> (bool handled) Delayed + HandleMouseEvent(WebKit::WebMouseEvent mouseEvent) # Sent when a mouse wheel event should be processed. HandleWheelEvent(WebKit::WebWheelEvent wheelEvent) -> (bool handled) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/APISession.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/APISession.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/APISession.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/APISession.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -28,6 +28,11 @@ #include +#if ENABLE(NETWORK_PROCESS) +#include "NetworkProcessMessages.h" +#include "WebProcessPool.h" +#endif + namespace API { static uint64_t generateID() @@ -75,6 +80,12 @@ Session::~Session() { +#if ENABLE(NETWORK_PROCESS) + if (m_sessionID.isEphemeral()) { + for (auto& processPool : WebKit::WebProcessPool::allProcessPools()) + processPool->sendToNetworkingProcess(Messages::NetworkProcess::DestroyPrivateBrowsingSession(m_sessionID)); + } +#endif } } // namespace API diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-07-07 11:04:40.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -47,6 +47,11 @@ #include #include +#if PLATFORM(X11) +#include +#undef KeyPress +#endif + using namespace WebCore; namespace WebKit { @@ -93,11 +98,8 @@ WebCore::IntSize PageClientImpl::viewSize() { - if (!gtk_widget_get_realized(m_viewWidget)) - return IntSize(); - GtkAllocation allocation; - gtk_widget_get_allocation(m_viewWidget, &allocation); - return IntSize(allocation.width, allocation.height); + auto* drawingArea = static_cast(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(m_viewWidget))->drawingArea()); + return drawingArea ? drawingArea->size() : IntSize(); } bool PageClientImpl::isViewWindowActive() @@ -135,7 +137,7 @@ webkitWebViewBaseSetTooltipText(WEBKIT_WEB_VIEW_BASE(m_viewWidget), newToolTip.utf8().data()); } -void PageClientImpl::setCursor(const Cursor& cursor) +void PageClientImpl::setCursor(const WebCore::Cursor& cursor) { if (!gtk_widget_get_realized(m_viewWidget)) return; @@ -430,4 +432,19 @@ { } +#if ENABLE(VIDEO) +GUniquePtr PageClientImpl::createGstInstallPluginsContext() +{ +#if PLATFORM(X11) + if (GDK_IS_X11_DISPLAY(gdk_display_manager_get_default_display(gdk_display_manager_get()))) { + GUniquePtr context(gst_install_plugins_context_new()); + gst_install_plugins_context_set_xid(context.get(), GDK_WINDOW_XID(gtk_widget_get_window(m_viewWidget))); + return context; + } +#endif + + return nullptr; +} +#endif + } // namespace WebKit diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-08-06 08:21:28.000000000 +0000 @@ -136,6 +136,10 @@ virtual void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled) override; +#if ENABLE(VIDEO) + virtual GUniquePtr createGstInstallPluginsContext() override; +#endif + // Members of PageClientImpl class GtkWidget* m_viewWidget; DefaultUndoController m_undoController; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp 2014-08-26 11:27:32.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp 2015-08-04 11:46:27.000000000 +0000 @@ -182,6 +182,8 @@ return WEBKIT_CONTEXT_MENU_ACTION_UNICODE; case ContextMenuItemTagSpellingGuess: return WEBKIT_CONTEXT_MENU_ACTION_SPELLING_GUESS; + case ContextMenuItemTagNoGuessesFound: + return WEBKIT_CONTEXT_MENU_ACTION_NO_GUESSES_FOUND; case ContextMenuItemTagIgnoreSpelling: return WEBKIT_CONTEXT_MENU_ACTION_IGNORE_SPELLING; case ContextMenuItemTagLearnSpelling: diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp 2015-05-20 15:25:37.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp 2015-08-05 07:50:24.000000000 +0000 @@ -71,7 +71,7 @@ WebKitCredential* webkitCredentialCreate(const WebCore::Credential& coreCredential) { - WebKitCredential* credential = g_slice_new(WebKitCredential); + WebKitCredential* credential = static_cast(fastMalloc(sizeof(WebKitCredential))); new (credential) WebKitCredential(coreCredential); return credential; } @@ -132,7 +132,7 @@ g_return_if_fail(credential); credential->~WebKitCredential(); - g_slice_free(WebKitCredential, credential); + fastFree(credential); } /** diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -44,7 +44,7 @@ WebKitJavascriptResult* webkitJavascriptResultCreate(WebKitWebView* webView, WebCore::SerializedScriptValue& serializedScriptValue) { - WebKitJavascriptResult* result = g_slice_new(WebKitJavascriptResult); + WebKitJavascriptResult* result = static_cast(fastMalloc(sizeof(WebKitJavascriptResult))); new (result) WebKitJavascriptResult(webView, serializedScriptValue); return result; } @@ -77,7 +77,7 @@ { if (g_atomic_int_dec_and_test(&javascriptResult->referenceCount)) { javascriptResult->~WebKitJavascriptResult(); - g_slice_free(WebKitJavascriptResult, javascriptResult); + fastFree(javascriptResult); } } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -42,7 +42,7 @@ WebKitMimeInfo* webkitMimeInfoCreate(const WebCore::MimeClassInfo& mimeInfo) { - WebKitMimeInfo* info = g_slice_new(WebKitMimeInfo); + WebKitMimeInfo* info = static_cast(fastMalloc(sizeof(WebKitMimeInfo))); new (info) WebKitMimeInfo(mimeInfo); return info; } @@ -75,7 +75,7 @@ { if (g_atomic_int_dec_and_test(&info->referenceCount)) { info->~WebKitMimeInfo(); - g_slice_free(WebKitMimeInfo, info); + fastFree(info); } } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -30,7 +30,7 @@ WebKitNavigationAction* webkitNavigationActionCreate(WebKitURIRequest* request, const NavigationActionData& navigationActionData) { - WebKitNavigationAction* navigation = g_slice_new0(WebKitNavigationAction); + WebKitNavigationAction* navigation = static_cast(fastZeroedMalloc(sizeof(WebKitNavigationAction))); new (navigation) WebKitNavigationAction(request, navigationActionData); return navigation; } @@ -49,7 +49,7 @@ { g_return_val_if_fail(navigation, nullptr); - WebKitNavigationAction* copy = g_slice_new0(WebKitNavigationAction); + WebKitNavigationAction* copy = static_cast(fastZeroedMalloc(sizeof(WebKitNavigationAction))); new (copy) WebKitNavigationAction(navigation); return copy; } @@ -67,7 +67,7 @@ g_return_if_fail(navigation); navigation->~WebKitNavigationAction(); - g_slice_free(WebKitNavigationAction, navigation); + fastFree(navigation); } /** diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h 2015-08-06 08:21:28.000000000 +0000 @@ -54,14 +54,14 @@ #define WEBKIT_DEFINE_ASYNC_DATA_STRUCT(structName) \ static structName* create##structName() \ { \ - structName* data = g_slice_new0(structName); \ + structName* data = static_cast(fastZeroedMalloc(sizeof(structName))); \ new (data) structName(); \ return data; \ } \ static void destroy##structName(structName* data) \ { \ data->~structName(); \ - g_slice_free(structName, data); \ + fastFree(data); \ } #define WEBKIT_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT) _WEBKIT_DEFINE_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, 0, { }) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp 2015-04-28 10:38:00.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp 2015-08-05 07:50:24.000000000 +0000 @@ -24,7 +24,7 @@ static WebKitScriptDialog* webkitScriptDialogCopy(WebKitScriptDialog* dialog) { - WebKitScriptDialog* copy = g_slice_new0(WebKitScriptDialog); + WebKitScriptDialog* copy = static_cast(fastZeroedMalloc(sizeof(WebKitScriptDialog))); new (copy) WebKitScriptDialog(dialog); return copy; } @@ -32,7 +32,7 @@ static void webkitScriptDialogFree(WebKitScriptDialog* dialog) { dialog->~WebKitScriptDialog(); - g_slice_free(WebKitScriptDialog, dialog); + fastFree(dialog); } G_DEFINE_BOXED_TYPE(WebKitScriptDialog, webkit_script_dialog, webkitScriptDialogCopy, webkitScriptDialogFree) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp 2015-05-20 15:25:37.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp 2015-08-05 07:50:24.000000000 +0000 @@ -136,7 +136,7 @@ { if (g_atomic_int_dec_and_test(&userStyleSheet->referenceCount)) { userStyleSheet->~WebKitUserStyleSheet(); - g_slice_free(WebKitUserStyleSheet, userStyleSheet); + fastFree(userStyleSheet); } } @@ -163,7 +163,7 @@ WebKitUserStyleSheet* webkit_user_style_sheet_new(const gchar* source, WebKitUserContentInjectedFrames injectedFrames, WebKitUserStyleLevel level, const char* const* whitelist, const char* const* blacklist) { g_return_val_if_fail(source, nullptr); - WebKitUserStyleSheet* userStyleSheet = g_slice_new(WebKitUserStyleSheet); + WebKitUserStyleSheet* userStyleSheet = static_cast(fastMalloc(sizeof(WebKitUserStyleSheet))); new (userStyleSheet) WebKitUserStyleSheet(source, injectedFrames, level, whitelist, blacklist); return userStyleSheet; } @@ -222,7 +222,7 @@ { if (g_atomic_int_dec_and_test(&userScript->referenceCount)) { userScript->~WebKitUserScript(); - g_slice_free(WebKitUserScript, userScript); + fastFree(userScript); } } @@ -249,7 +249,7 @@ WebKitUserScript* webkit_user_script_new(const gchar* source, WebKitUserContentInjectedFrames injectedFrames, WebKitUserScriptInjectionTime injectionTime, const gchar* const* whitelist, const gchar* const* blacklist) { g_return_val_if_fail(source, nullptr); - WebKitUserScript* userScript = g_slice_new(WebKitUserScript); + WebKitUserScript* userScript = static_cast(fastMalloc(sizeof(WebKitUserScript))); new (userScript) WebKitUserScript(source, injectedFrames, injectionTime, whitelist, blacklist); return userScript; } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2015-07-08 08:10:19.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -154,7 +154,6 @@ IntSize resizerSize; #endif GRefPtr accessible; - bool needsResizeOnMap; GtkWidget* authenticationDialog; GtkWidget* inspectorView; AttachmentSide inspectorAttachmentSide; @@ -508,7 +507,7 @@ gtk_widget_set_can_focus(viewWidget, TRUE); gtk_drag_dest_set(viewWidget, static_cast(0), nullptr, 0, static_cast(GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_PRIVATE)); - gtk_drag_dest_set_target_list(viewWidget, PasteboardHelper::defaultPasteboardHelper()->targetList()); + gtk_drag_dest_set_target_list(viewWidget, PasteboardHelper::singleton().targetList()); WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(object)->priv; priv->pageClient = PageClientImpl::create(viewWidget); @@ -595,8 +594,11 @@ priv->children.set(child, IntRect()); } -static void resizeWebKitWebViewBaseFromAllocation(WebKitWebViewBase* webViewBase, GtkAllocation* allocation, bool sizeChanged) +static void webkitWebViewBaseSizeAllocate(GtkWidget* widget, GtkAllocation* allocation) { + GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->size_allocate(widget, allocation); + + WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget); gtk_container_foreach(GTK_CONTAINER(webViewBase), webkitWebViewBaseChildAllocate, webViewBase); IntRect viewRect(allocation->x, allocation->y, allocation->width, allocation->height); @@ -638,38 +640,22 @@ } DrawingAreaProxyImpl* drawingArea = static_cast(priv->pageProxy->drawingArea()); + if (!drawingArea) + return; + #if USE(REDIRECTED_XCOMPOSITE_WINDOW) - if (sizeChanged && priv->redirectedWindow && drawingArea && drawingArea->isInAcceleratedCompositingMode()) + if (priv->redirectedWindow && drawingArea->isInAcceleratedCompositingMode()) priv->redirectedWindow->resize(viewRect.size()); -#else - UNUSED_PARAM(sizeChanged); #endif - if (drawingArea) - drawingArea->setSize(viewRect.size(), IntSize(), IntSize()); + drawingArea->setSize(viewRect.size(), IntSize(), IntSize()); #if !GTK_CHECK_VERSION(3, 13, 4) webkitWebViewBaseNotifyResizerSize(webViewBase); #endif } -static void webkitWebViewBaseSizeAllocate(GtkWidget* widget, GtkAllocation* allocation) -{ - bool sizeChanged = gtk_widget_get_allocated_width(widget) != allocation->width - || gtk_widget_get_allocated_height(widget) != allocation->height; - - GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->size_allocate(widget, allocation); - - WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget); - if (sizeChanged && !gtk_widget_get_mapped(widget)) { - webViewBase->priv->needsResizeOnMap = true; - return; - } - - resizeWebKitWebViewBaseFromAllocation(webViewBase, allocation, sizeChanged); -} - static void webkitWebViewBaseMap(GtkWidget* widget) { GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->map(widget); @@ -680,14 +666,6 @@ priv->isVisible = true; priv->pageProxy->viewStateDidChange(ViewState::IsVisible); } - - if (!priv->needsResizeOnMap) - return; - - GtkAllocation allocation; - gtk_widget_get_allocation(widget, &allocation); - resizeWebKitWebViewBaseFromAllocation(webViewBase, &allocation, true /* sizeChanged */); - priv->needsResizeOnMap = false; } static void webkitWebViewBaseUnmap(GtkWidget* widget) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gstreamer/WebPageProxyGStreamer.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gstreamer/WebPageProxyGStreamer.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gstreamer/WebPageProxyGStreamer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gstreamer/WebPageProxyGStreamer.cpp 2015-08-05 07:01:12.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2015 Igalia S.L. + * + * 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 INC. 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 INC. 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 "WebPageProxy.h" + +#if ENABLE(VIDEO) && USE(GSTREAMER) + +#include "PageClient.h" +#include "WebPageMessages.h" + +namespace WebKit { + +void WebPageProxy::requestInstallMissingMediaPlugins(const String& details) +{ + CString detail = details.utf8(); + const char* detailArray[2] = { detail.data(), nullptr }; + ref(); + GUniquePtr context = m_pageClient.createGstInstallPluginsContext(); + GstInstallPluginsReturn result = gst_install_plugins_async(detailArray, context.get(), [](GstInstallPluginsReturn result, gpointer userData) { + RefPtr page = adoptRef(static_cast(userData)); + if (page->isValid()) + page->send(Messages::WebPage::DidEndRequestInstallMissingMediaPlugins(static_cast(result))); + }, this); + + if (result != GST_INSTALL_PLUGINS_STARTED_OK) { + // If the installer didn't start, the callback will not be called, so remove the ref manually. + deref(); + send(Messages::WebPage::DidEndRequestInstallMissingMediaPlugins(static_cast(result))); + WTFLogAlways("Missing GStreamer Plugin: %s\n", detail.data()); + } +} + +} // namespace WebKit + +#endif // ENABLE(VIDEO) && USE(GSTREAMER) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp 2015-07-07 12:24:25.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -111,7 +111,7 @@ void DragAndDropHandler::startDrag(const DragData& dragData, PassRefPtr dragImage) { RefPtr dataObject = adoptRef(dragData.platformData()); - GRefPtr targetList = adoptGRef(PasteboardHelper::defaultPasteboardHelper()->targetListForDataObject(dataObject.get())); + GRefPtr targetList = adoptGRef(PasteboardHelper::singleton().targetListForDataObject(dataObject.get())); GUniquePtr currentEvent(gtk_get_current_event()); GdkDragContext* context = gtk_drag_begin(m_page.viewWidget(), targetList.get(), dragOperationToGdkDragActions(dragData.draggingSourceOperationMask()), @@ -130,7 +130,7 @@ void DragAndDropHandler::fillDragData(GdkDragContext* context, GtkSelectionData* selectionData, unsigned info) { if (DataObjectGtk* dataObject = m_draggingDataObjects.get(context)) - PasteboardHelper::defaultPasteboardHelper()->fillSelectionData(selectionData, info, dataObject); + PasteboardHelper::singleton().fillSelectionData(selectionData, info, dataObject); } void DragAndDropHandler::finishDrag(GdkDragContext* context) @@ -153,7 +153,7 @@ return nullptr; droppingContext->pendingDataRequests--; - PasteboardHelper::defaultPasteboardHelper()->fillDataObjectFromDropData(selectionData, info, droppingContext->dataObject.get()); + PasteboardHelper::singleton().fillDataObjectFromDropData(selectionData, info, droppingContext->dataObject.get()); if (droppingContext->pendingDataRequests) return nullptr; @@ -185,7 +185,7 @@ if (!droppingContext) { GtkWidget* widget = m_page.viewWidget(); droppingContext = std::make_unique(context, position); - Vector acceptableTargets(PasteboardHelper::defaultPasteboardHelper()->dropAtomsForContext(widget, droppingContext->gdkContext)); + Vector acceptableTargets(PasteboardHelper::singleton().dropAtomsForContext(widget, droppingContext->gdkContext)); droppingContext->pendingDataRequests = acceptableTargets.size(); for (auto& target : acceptableTargets) gtk_drag_get_data(widget, droppingContext->gdkContext, target, time); diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2015-08-06 08:48:09.000000000 +0000 @@ -170,10 +170,7 @@ WebContextMenuProxyGtk::~WebContextMenuProxyGtk() { - for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter) - g_signal_handler_disconnect(iter->value, iter->key); - - webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), 0); + cancelTracking(); } void WebContextMenuProxyGtk::menuPositionFunction(GtkMenu* menu, gint* x, gint* y, gboolean* pushIn, WebContextMenuProxyGtk* popupMenu) @@ -193,5 +190,15 @@ *pushIn = FALSE; } +void WebContextMenuProxyGtk::cancelTracking() +{ + for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter) + g_signal_handler_disconnect(iter->value, iter->key); + m_signalHandlers.clear(); + + webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), nullptr); + m_menu.setPlatformDescription(nullptr); +} + } // namespace WebKit #endif // ENABLE(CONTEXT_MENUS) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h 2015-08-06 08:48:43.000000000 +0000 @@ -46,8 +46,9 @@ } ~WebContextMenuProxyGtk(); - virtual void showContextMenu(const WebCore::IntPoint&, const Vector&, const ContextMenuContextData&); - virtual void hideContextMenu(); + virtual void showContextMenu(const WebCore::IntPoint&, const Vector&, const ContextMenuContextData&) override; + virtual void hideContextMenu() override; + virtual void cancelTracking() override; void populate(Vector&); GtkMenu* gtkMenu() const { return m_menu.platformDescription(); } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/PageClient.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/PageClient.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/PageClient.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/PageClient.h 2015-08-06 08:21:28.000000000 +0000 @@ -34,6 +34,10 @@ #include #include +#if ENABLE(VIDEO) && USE(GSTREAMER) +#include +#endif + #if PLATFORM(COCOA) #include "PluginComplexTextInputState.h" @@ -315,6 +319,10 @@ #if PLATFORM(MAC) virtual void didPerformActionMenuHitTest(const ActionMenuHitTestResult&, bool forImmediateAction, API::Object*) = 0; #endif + +#if ENABLE(VIDEO) && USE(GSTREAMER) + virtual GUniquePtr createGstInstallPluginsContext() = 0; +#endif }; } // namespace WebKit diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-07-07 11:01:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -1242,10 +1242,8 @@ m_viewState |= ViewState::IsVisible; if (flagsToUpdate & ViewState::IsVisibleOrOccluded && m_pageClient.isViewVisibleOrOccluded()) m_viewState |= ViewState::IsVisibleOrOccluded; - if (flagsToUpdate & ViewState::IsInWindow && m_pageClient.isViewInWindow()) { + if (flagsToUpdate & ViewState::IsInWindow && m_pageClient.isViewInWindow()) m_viewState |= ViewState::IsInWindow; - m_viewWasEverInWindow = true; - } if (flagsToUpdate & ViewState::IsVisuallyIdle && m_pageClient.isVisuallyIdle()) m_viewState |= ViewState::IsVisuallyIdle; } @@ -1310,8 +1308,9 @@ updateViewState(m_potentiallyChangedViewStateFlags); ViewState::Flags changed = m_viewState ^ previousViewState; + bool isNowInWindow = (changed & ViewState::IsInWindow) && isInWindow(); // We always want to wait for the Web process to reply if we've been in-window before and are coming back in-window. - if (m_viewWasEverInWindow && (changed & ViewState::IsInWindow) && isInWindow()) + if (m_viewWasEverInWindow && isNowInWindow) m_viewStateChangeWantsSynchronousReply = true; // Don't wait synchronously if the view state is not visible. (This matters in particular on iOS, where a hidden page may be suspended.) @@ -1346,6 +1345,7 @@ m_potentiallyChangedViewStateFlags = ViewState::NoFlags; m_viewStateChangeWantsSynchronousReply = false; + m_viewWasEverInWindow |= isNowInWindow; } void WebPageProxy::updateActivityToken() diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.h 2015-07-07 11:01:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.h 2015-08-06 08:21:28.000000000 +0000 @@ -1377,6 +1377,12 @@ void didPerformActionMenuHitTest(const ActionMenuHitTestResult&, bool forImmediateAction, const UserData&); #endif +#if ENABLE(VIDEO) +#if USE(GSTREAMER) + void requestInstallMissingMediaPlugins(const String& details); +#endif +#endif + PageClient& m_pageClient; std::unique_ptr m_loaderClient; std::unique_ptr m_policyClient; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.messages.in webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.messages.in --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2015-08-06 08:21:28.000000000 +0000 @@ -421,4 +421,8 @@ #if PLATFORM(MAC) DidPerformActionMenuHitTest(struct WebKit::ActionMenuHitTestResult result, bool forImmediateAction, WebKit::UserData userData) #endif + +#if ENABLE(VIDEO) && USE(GSTREAMER) + RequestInstallMissingMediaPlugins(String details) +#endif } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -367,11 +367,8 @@ if (m_waitingOnAsynchronousInitialization) return false; - bool handled = false; - if (!m_connection->connection()->sendSync(Messages::PluginControllerProxy::HandleMouseEvent(mouseEvent), Messages::PluginControllerProxy::HandleMouseEvent::Reply(handled), m_pluginInstanceID)) - return false; - - return handled; + m_connection->connection()->send(Messages::PluginControllerProxy::HandleMouseEvent(mouseEvent), m_pluginInstanceID); + return true; } bool PluginProxy::handleWheelEvent(const WebWheelEvent& wheelEvent) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -1102,4 +1102,13 @@ return m_page->shouldDispatchFakeMouseMoveEvents(); } +#if ENABLE(VIDEO) +#if USE(GSTREAMER) +void WebChromeClient::requestInstallMissingMediaPlugins(const String& details, WebCore::MediaPlayerRequestInstallMissingPluginsCallback& callback) +{ + m_page->requestInstallMissingMediaPlugins(details, callback); +} +#endif +#endif // ENABLE(VIDEO) + } // namespace WebKit diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h 2015-08-06 08:21:28.000000000 +0000 @@ -310,6 +310,12 @@ virtual bool shouldDispatchFakeMouseMoveEvents() const override; +#if ENABLE(VIDEO) +#if USE(GSTREAMER) + virtual void requestInstallMissingMediaPlugins(const String&, WebCore::MediaPlayerRequestInstallMissingPluginsCallback&) override; +#endif +#endif + String m_cachedToolTip; mutable RefPtr m_cachedFrameSetLargestFrame; mutable bool m_cachedMainFrameHasHorizontalScrollbar; diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/gstreamer/WebPageGStreamer.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/gstreamer/WebPageGStreamer.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/gstreamer/WebPageGStreamer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/gstreamer/WebPageGStreamer.cpp 2015-08-04 13:37:46.000000000 +0000 @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 Igalia S.L. + * + * 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 INC. 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 INC. 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 "WebPage.h" + +#if ENABLE(VIDEO) && USE(GSTREAMER) + +#include "WebPageProxyMessages.h" +#include +#include + +namespace WebKit { + +void WebPage::requestInstallMissingMediaPlugins(const String& details, WebCore::MediaPlayerRequestInstallMissingPluginsCallback& callback) +{ + if (m_installMediaPluginsCallback) { + callback.complete(GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS); + return; + } + + m_installMediaPluginsCallback = &callback; + send(Messages::WebPageProxy::RequestInstallMissingMediaPlugins(details)); +} + +void WebPage::didEndRequestInstallMissingMediaPlugins(uint32_t result) +{ + if (!m_installMediaPluginsCallback) + return; + + m_installMediaPluginsCallback->complete(result); + m_installMediaPluginsCallback = nullptr; +} + +} // namespace WebKit + +#endif // ENABLE(VIDEO) && USE(GSTREAMER) diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.cpp webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.cpp --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-07-07 07:25:16.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -213,6 +213,10 @@ #include "CoordinatedLayerTreeHostMessages.h" #endif +#if ENABLE(VIDEO) && USE(GSTREAMER) +#include +#endif + using namespace JSC; using namespace WebCore; @@ -1013,6 +1017,13 @@ } #endif +#if ENABLE(VIDEO) && USE(GSTREAMER) + if (m_installMediaPluginsCallback) { + m_installMediaPluginsCallback->invalidate(); + m_installMediaPluginsCallback = nullptr; + } +#endif + m_sandboxExtensionTracker.invalidate(); #if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC) @@ -1197,7 +1208,7 @@ { SendStopResponsivenessTimer stopper(this); - ASSERT(!m_pendingNavigationID); + ASSERT(!m_mainFrame->coreFrame()->loader().frameHasLoaded() || !m_pendingNavigationID); m_pendingNavigationID = navigationID; m_sandboxExtensionTracker.beginLoad(m_mainFrame.get(), sandboxExtensionHandle); @@ -1725,7 +1736,8 @@ auto graphicsContext = snapshot->bitmap()->createGraphicsContext(); - Color backgroundColor = coreFrame->settings().backgroundShouldExtendBeyondPage() ? frameView->documentBackgroundColor() : frameView->baseBackgroundColor(); + Color documentBackgroundColor = frameView->documentBackgroundColor(); + Color backgroundColor = (coreFrame->settings().backgroundShouldExtendBeyondPage() && documentBackgroundColor.isValid()) ? documentBackgroundColor : frameView->baseBackgroundColor(); graphicsContext->fillRect(IntRect(IntPoint(), bitmapSize), backgroundColor, ColorSpaceDeviceRGB); if (!(options & SnapshotOptionsExcludeDeviceScaleFactor)) { diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.h webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.h --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-07-07 07:25:16.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-08-06 08:21:28.000000000 +0000 @@ -139,6 +139,10 @@ struct Highlight; struct KeypressCommand; struct TextCheckingResult; + +#if ENABLE(VIDEO) && USE(GSTREAMER) +class MediaPlayerRequestInstallMissingPluginsCallback; +#endif } namespace WebKit { @@ -865,6 +869,12 @@ void setPageActivityState(WebCore::PageActivityState::Flags); +#if ENABLE(VIDEO) +#if USE(GSTREAMER) + void requestInstallMissingMediaPlugins(const String& details, WebCore::MediaPlayerRequestInstallMissingPluginsCallback&); +#endif +#endif + private: WebPage(uint64_t pageID, const WebPageCreationParameters&); @@ -1092,6 +1102,10 @@ void setShouldDispatchFakeMouseMoveEvents(bool dispatch) { m_shouldDispatchFakeMouseMoveEvents = dispatch; } +#if ENABLE(VIDEO) && USE(GSTREAMER) + void didEndRequestInstallMissingMediaPlugins(uint32_t result); +#endif + uint64_t m_pageID; std::unique_ptr m_page; @@ -1337,6 +1351,10 @@ bool m_mainFrameProgressCompleted; bool m_shouldDispatchFakeMouseMoveEvents; + +#if ENABLE(VIDEO) && USE(GSTREAMER) + RefPtr m_installMediaPluginsCallback; +#endif }; } // namespace WebKit diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in --- webkit2gtk-2.8.4+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-08-06 08:21:28.000000000 +0000 @@ -409,4 +409,8 @@ #endif SetShouldDispatchFakeMouseMoveEvents(bool shouldDispatchFakeMouseMoveEvents) + +#if ENABLE(VIDEO) && USE(GSTREAMER) + DidEndRequestInstallMissingMediaPlugins(uint32_t result) +#endif } diff -Nru webkit2gtk-2.8.4+dfsg1/Source/WTF/wtf/HashTable.h webkit2gtk-2.8.5+dfsg1/Source/WTF/wtf/HashTable.h --- webkit2gtk-2.8.4+dfsg1/Source/WTF/wtf/HashTable.h 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Source/WTF/wtf/HashTable.h 2015-08-06 08:21:28.000000000 +0000 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -431,6 +432,8 @@ template FullLookupType fullLookupForWriting(const T&); template LookupType lookupForWriting(const T&); + template void addUniqueForInitialization(T&& key, Extra&&); + template void checkKey(const T&); void removeAndInvalidateWithoutEntryConsistencyCheck(ValueType*); @@ -761,6 +764,59 @@ } } + template + template + ALWAYS_INLINE void HashTable::addUniqueForInitialization(T&& key, Extra&& extra) + { + ASSERT(m_table); + + checkKey(key); + + invalidateIterators(); + + internalCheckTableConsistency(); + + unsigned k = 0; + ValueType* table = m_table; + unsigned sizeMask = m_tableSizeMask; + unsigned h = HashTranslator::hash(key); + unsigned i = h & sizeMask; + +#if DUMP_HASHTABLE_STATS + ++HashTableStats::numAccesses; + unsigned probeCount = 0; +#endif + +#if DUMP_HASHTABLE_STATS_PER_TABLE + ++m_stats->numAccesses; +#endif + + ValueType* entry; + while (1) { + entry = table + i; + + if (isEmptyBucket(*entry)) + break; + +#if DUMP_HASHTABLE_STATS + ++probeCount; + HashTableStats::recordCollisionAtCount(probeCount); +#endif + +#if DUMP_HASHTABLE_STATS_PER_TABLE + m_stats->recordCollisionAtCount(probeCount); +#endif + + if (k == 0) + k = 1 | doubleHash(h); + i = (i + k) & sizeMask; + } + + HashTranslator::translate(*entry, std::forward(key), std::forward(extra)); + + internalCheckTableConsistency(); + } + template struct HashTableBucketInitializer; template<> struct HashTableBucketInitializer { @@ -1155,26 +1211,40 @@ template HashTable::HashTable(const HashTable& other) - : m_table(0) + : m_table(nullptr) , m_tableSize(0) , m_tableSizeMask(0) , m_keyCount(0) , m_deletedCount(0) #if CHECK_HASHTABLE_ITERATORS - , m_iterators(0) + , m_iterators(nullptr) , m_mutex(std::make_unique()) #endif #if DUMP_HASHTABLE_STATS_PER_TABLE , m_stats(std::make_unique(*other.m_stats)) #endif { - // Copy the hash table the dumb way, by adding each element to the new table. - // It might be more efficient to copy the table slots, but it's not clear that efficiency is needed. - // FIXME: It's likely that this can be improved, for static analyses that use - // HashSets. https://bugs.webkit.org/show_bug.cgi?id=118455 - const_iterator end = other.end(); - for (const_iterator it = other.begin(); it != end; ++it) - add(*it); + unsigned otherKeyCount = other.size(); + if (!otherKeyCount) + return; + + unsigned bestTableSize = WTF::roundUpToPowerOfTwo(otherKeyCount) * 2; + + // With maxLoad at 1/2 and minLoad at 1/6, our average load is 2/6. + // If we are getting halfway between 2/6 and 1/2 (past 5/12), we double the size to avoid being too close to + // loadMax and bring the ratio close to 2/6. This give us a load in the bounds [3/12, 5/12). + bool aboveThreeQuarterLoad = otherKeyCount * 12 >= bestTableSize * 5; + if (aboveThreeQuarterLoad) + bestTableSize *= 2; + + unsigned minimumTableSize = KeyTraits::minimumTableSize; + m_tableSize = std::max(bestTableSize, minimumTableSize); + m_tableSizeMask = m_tableSize - 1; + m_keyCount = otherKeyCount; + m_table = allocateTable(m_tableSize); + + for (const auto& otherValue : other) + addUniqueForInitialization(Extractor::extract(otherValue), otherValue); } template @@ -1197,8 +1267,6 @@ template auto HashTable::operator=(const HashTable& other) -> HashTable& { - // FIXME: It's likely that this can be improved, for static analyses that use - // HashSets. https://bugs.webkit.org/show_bug.cgi?id=118455 HashTable tmp(other); swap(tmp); return *this; diff -Nru webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp --- webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp 2015-05-20 15:25:37.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp 2015-08-04 11:46:27.000000000 +0000 @@ -155,6 +155,26 @@ Util::run(&test1Done); } +TEST(WebKit2, PageReload) +{ + WKRetainPtr context(AdoptWK, WKContextCreate()); + PlatformWebView webView(context.get()); + + // Reload test before url loading. + WKPageReload(webView.page()); + WKPageReload(webView.page()); + + WKRetainPtr url(AdoptWK, Util::createURLForResource("simple", "html")); + WKPageLoadURL(webView.page(), url.get()); + + // Reload test after url loading. + WKPageReload(webView.page()); + + WKRetainPtr activeUrl = adoptWK(WKPageCopyActiveURL(webView.page())); + ASSERT_NOT_NULL(activeUrl.get()); + EXPECT_TRUE(WKURLIsEqual(activeUrl.get(), url.get())); +} + } // namespace TestWebKitAPI #endif diff -Nru webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp --- webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -328,19 +328,14 @@ // Unregistering a handler and re-registering again under the same name should work. test->unregisterHandler("msg"); - // FIXME: Enable after https://bugs.webkit.org/show_bug.cgi?id=138142 gets fixed. -#if 0 javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers.msg.postMessage('42');", &error.outPtr()); g_assert(!javascriptResult); g_assert(error.get()); // Re-registering a handler that has been unregistered must work g_assert(test->registerHandler("msg")); - message = test->postMessageAndWaitUntilReceived("msg", "'handler: msg'"); - valueString.reset(WebViewTest::javascriptResultToCString(message)); - webkit_javascript_result_unref(message); + valueString.reset(WebViewTest::javascriptResultToCString(test->postMessageAndWaitUntilReceived("msg", "'handler: msg'"))); g_assert_cmpstr(valueString.get(), ==, "handler: msg"); -#endif test->unregisterHandler("anotherHandler"); } diff -Nru webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp --- webkit2gtk-2.8.4+dfsg1/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp 2015-07-06 06:35:50.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp 2015-08-06 08:21:28.000000000 +0000 @@ -295,4 +295,75 @@ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount); } +TEST(WTF_HashSet, CopyEmpty) +{ + { + HashSet foo; + HashSet bar(foo); + + EXPECT_EQ(0u, bar.capacity()); + EXPECT_EQ(0u, bar.size()); + } + { + HashSet foo({ 1, 5, 64, 42 }); + EXPECT_EQ(4u, foo.size()); + foo.remove(1); + foo.remove(5); + foo.remove(42); + foo.remove(64); + HashSet bar(foo); + + EXPECT_EQ(0u, bar.capacity()); + EXPECT_EQ(0u, bar.size()); + } +} + +TEST(WTF_HashSet, CopyAllocateAtLeastMinimumCapacity) +{ + HashSet foo({ 42 }); + EXPECT_EQ(1u, foo.size()); + HashSet bar(foo); + + EXPECT_EQ(8u, bar.capacity()); + EXPECT_EQ(1u, bar.size()); +} + +TEST(WTF_HashSet, CopyCapacityIsNotOnBoundary) +{ + // Starting at 4 because the minimum size is 8. + // With a size of 8, a medium load can be up to 3.3333->3. + // Adding 1 to 3 would reach max load. + // While correct, that's not really what we care about here. + for (unsigned size = 4; size < 100; ++size) { + HashSet source; + for (unsigned i = 1; i < size + 1; ++i) + source.add(i); + + HashSet copy1(source); + HashSet copy2(source); + HashSet copy3(source); + + EXPECT_EQ(size, copy1.size()); + EXPECT_EQ(size, copy2.size()); + EXPECT_EQ(size, copy3.size()); + for (unsigned i = 1; i < size + 1; ++i) { + EXPECT_TRUE(copy1.contains(i)); + EXPECT_TRUE(copy2.contains(i)); + EXPECT_TRUE(copy3.contains(i)); + } + EXPECT_FALSE(copy1.contains(size + 2)); + EXPECT_FALSE(copy2.contains(size + 2)); + EXPECT_FALSE(copy3.contains(size + 2)); + + EXPECT_TRUE(copy2.remove(1)); + EXPECT_EQ(copy1.capacity(), copy2.capacity()); + EXPECT_FALSE(copy2.contains(1)); + + EXPECT_TRUE(copy3.add(size + 2).isNewEntry); + EXPECT_EQ(copy1.capacity(), copy3.capacity()); + EXPECT_TRUE(copy3.contains(size + 2)); + } +} + + } // namespace TestWebKitAPI diff -Nru webkit2gtk-2.8.4+dfsg1/Tools/WebKitTestRunner/gtk/fonts/fonts.conf webkit2gtk-2.8.5+dfsg1/Tools/WebKitTestRunner/gtk/fonts/fonts.conf --- webkit2gtk-2.8.4+dfsg1/Tools/WebKitTestRunner/gtk/fonts/fonts.conf 2015-05-20 15:25:37.000000000 +0000 +++ webkit2gtk-2.8.5+dfsg1/Tools/WebKitTestRunner/gtk/fonts/fonts.conf 2015-08-05 08:11:12.000000000 +0000 @@ -337,6 +337,22 @@ + + + FamilyStrongAliasedToFreeMono + + FreeMono + + + + + + FamilyWeakAliasedToFreeMono + + FreeMono + + +